ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 31356|回复: 16

[求助] 在EXCEL中如何制作P控制图的上下控制限?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-5-30 10:36 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:数据标签设置
EXCEL中如何实现如下图所示的P控制图的上下限, 源数据在附件. 请帮忙, 谢谢!

Minitab软件做出的P控制图

Minitab软件做出的P控制图



P_Chart管制图源数据.zip (51.3 KB, 下载次数: 372)



TA的精华主题

TA的得分主题

发表于 2014-5-30 13:26 | 显示全部楼层
做了一个,你看看

P_Chart管制图-1.zip

55.73 KB, 下载次数: 355

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-30 14:01 | 显示全部楼层
非常感谢, 正是我想要的, 关键是如何做? 能否详细解说下, 谢谢!

TA的精华主题

TA的得分主题

发表于 2014-5-30 14:28 | 显示全部楼层
其实您已经做得差不多了,但是UCL和LCL的误差线设定有点问题而已。
请指示观察我图表中误差线的设定就能明白了。
(辅助1和辅助2都是分别用来设定误差线的)
另:关于超出UCL和LCL范围的CL的红点表示,则是通过辅助3来完成,
说白了就是在图中加一条线,但只取超出范围的数。
超出部分的标签显示问题,因为辅助3中的数据是实际数据,而不是所想显示的1,
故通过辅助4的数据来完成显示,具体显示是通过标签替换工具来完成。
标签替换工具为一个VBA宏,具体代码如下;
  1. Sub DataLableChange()
  2. Dim I%, LblCnt%, iRows%, iCols%
  3. Dim shnm$, sn$, Msg$
  4. Dim rngLbl As Range

  5. Select Case TypeName(Selection)
  6. Case "DataLabel"
  7.     sn = Selection.Parent.Parent.Name
  8. Case "DataLabels"
  9.     sn = Selection.Parent.Name
  10. Case "Series"
  11.     sn = Selection.Name
  12. Case Else
  13.     MsgBox "请先选中一个系列或系列数据标签再开始使用工具.", vbOKOnly, "提示:选中系列或系列数据标签"
  14.     Exit Sub
  15. End Select

  16. Err.Clear: On Error Resume Next
  17. Set rngLbl = Application.InputBox("请输入标签所引用的区域,可以用鼠标选择区域.", "标签的引用区域", , , , , , 8)
  18. Err.Clear: On Error GoTo 0
  19. If rngLbl Is Nothing Then Exit Sub

  20. iRows = rngLbl.Rows.Count
  21. iCols = rngLbl.Columns.Count
  22. LblCnt = ActiveChart.SeriesCollection(sn).Points.Count
  23. shnm = rngLbl.Parent.Name
  24. If Application.Max(iRows, iCols) < ActiveChart.SeriesCollection(sn).Points.Count Then
  25.     Msg = MsgBox("你所选择的引用单元格小于该系列需要的个数," & Chr(10) & "  选择""Yes""继续," & Chr(10) & "  选择""No""停止执行.", vbYesNo, "引用单元格数量不够")
  26.     Select Case Msg
  27.     Case vbYes
  28.         LblCnt = Application.Max(iRows, iCols)
  29.     Case vbNo
  30.         Exit Sub
  31.     End Select
  32. End If

  33. Application.ScreenUpdating = False
  34. On Error Resume Next
  35. With ActiveChart.SeriesCollection(sn)
  36.     For I = 1 To LblCnt
  37.         Err.Clear
  38.         .Points(I).ApplyDataLabels
  39.         If Err.Number = 0 Then
  40.             If iRows > iCols Then
  41.                 .Points(I).DataLabel.Text = "='" & shnm & "'!" & rngLbl.Cells(I, 1).Resize(1, iCols).Address(ReferenceStyle:=xlR1C1)
  42.             Else
  43.                 .Points(I).DataLabel.Text = "='" & shnm & "'!" & rngLbl.Cells(1, I).Resize(iRows, 1).Address(ReferenceStyle:=xlR1C1)
  44.             End If
  45.         End If
  46.     Next
  47. End With
  48. Err.Clear: On Error GoTo 0
  49. Application.ScreenUpdating = True
  50. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-5-30 14:37 | 显示全部楼层
刚刚的图中有点小失误,改了一下,图表看上去更贴近你要的效果。
更改点:添加额辅助5数据。
用来替换系列【不良率】和【不良率2】中的X轴数据。

P_Chart管制图-1.zip

56.36 KB, 下载次数: 270

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-30 15:36 | 显示全部楼层
kanoumatsu 发表于 2014-5-30 14:28
其实您已经做得差不多了,但是UCL和LCL的误差线设定有点问题而已。
请指示观察我图表中误差线的设定就能明 ...

真的谢谢啊! 可惜对VBA一点概念都没, 不过此标签显示问题无关紧要.

验证练习先, 再谢!

TA的精华主题

TA的得分主题

发表于 2014-5-30 15:37 | 显示全部楼层
Haileyhuang 发表于 2014-5-30 15:36
真的谢谢啊! 可惜对VBA一点概念都没, 不过此标签显示问题无关紧要.

验证练习先, 再谢!

看了你的信息,又给你做了个步骤。

P_Chart管制图教程.zip

163.97 KB, 下载次数: 591

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-3 10:08 | 显示全部楼层
kanoumatsu 发表于 2014-5-30 15:37
看了你的信息,又给你做了个步骤。

非常棒的解说, 谢谢!

TA的精华主题

TA的得分主题

发表于 2014-6-3 13:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-6-5 21:57 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-12 05:13 , Processed in 0.059799 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表