ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: qamiao

[求助] 求高手帮忙实现柏拉图一键生成

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-5-3 14:08 | 显示全部楼层
同意一件兄的观点。工具是用来更高效地工作,但必须在正确的基础上。如果是错误的,高效率就惨了。

TA的精华主题

TA的得分主题

发表于 2010-5-3 16:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我番查了一下手头上的统计应用技术的资料(GB/T 19001-1994 统计技术指南),排列图(柏拉图)的曲线的确是以零点开始并且第二点与第一柱右上角向交.说到底这个图只不过是工具,能表达清楚就行了,至于起点在哪儿我真的认为无关紧要.一件兄的言辞未免有点过,就算自己是对的也没有必要嘲笑别人吧?

[ 本帖最后由 HLAI 于 2010-5-3 16:41 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-5-3 17:31 | 显示全部楼层
原帖由 HLAI 于 2010-5-3 16:39 发表
我番查了一下手头上的统计应用技术的资料(GB/T 19001-1994 统计技术指南),排列图(柏拉图)的曲线的确是以零点开始并且第二点与第一柱右上角向交.说到底这个图只不过是工具,能表达清楚就行了,至于起点在哪儿我真的认为 ...


本来就这种求助帖,对于lz求知的态度是不敢恭维....本就只是飘过而已
EH是一个技术交流社区 没人对于每个求助帖均有回复的义务

讲个小故事:是基于 统计应用技术的资料(GB/T 19001-1994 统计技术指南) 的
2004福特来验厂,对于咱搞得SS porject 相当的嗤之以鼻 因为其中使用的基础统计技术是基于GB/T 19001-1994 的[是Excel搞的 JMP尚未使用]
这个标准好像到现在快20年了 没更新过

统计技术这种东西基本属舶来品,看看JMP你就明白了,JMP的设计原则统统是引经据典来的,SAS几十年研究统计软件[世界第6大编程软件公司] 会有这样的瑕疵?
至少目前我看到的E文资料无不是从第一个柱形的右上角起始的,原因不外是 从0起始的意义是什么,只是个干扰

回归本源:说到底这个图只不过是工具,能表达清楚问题所在即可,所以楼主的:折线从零点开始 意义在何?
lz有个回帖相当有趣:
====================================================
问题是在那个公司工作,有的公司的职员柏拉图
只会用minitab 画,两鬓苍白的老品管啦,看到他们用excel画的一个个
柱状图连累加折线都没有说是排列图,我笑笑没言语.
=====================================================

看到这里我也只会对楼主笑笑没言语.lz的关注重点在"回"字有几种写法,而不是"回"字的意义

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 22:32 | 显示全部楼层
一件兄,

小弟初入Q界,想请教,你看到的Pareto Diagram标准来自哪里?
请拿出具体证据或者标准截图,品管嘛都要求个证据。

我们的国家标准好多都是直接翻译过来稍加更改的,统计局的人
应该不是吃闲饭的,如果一件兄你的标准正确,我会想办法联系
统计局建议修改标准。

还有JMP为什么没有从零点开始,根据excel画法我是这样考虑的:
1.零点考虑需要在累计百分比前加一个数据0,(这样的话表格显得会不整齐,小弟的做法是把“累计百分比”哪一格当成0了)
2.用户使用时一般只输入到JMP里已有项目的累计,显然不会输入零,所以考虑到用户方便。

一件兄公司2004年了统计技术还用excel,没有minitab吗,13版的至少出来了吧,
推行六西格玛用minitab的最多(尽管minitab也有缺陷),至少在做MSA的时候minitab比
excel科学吧,都2004年了推行六西格玛还用excel,人家不嗤之以鼻才怪,人家恐怕不是对
中国的统计技术有想法(中国数学在理论研究上还是可以让世人瞩目的)

另外,我笑笑没说,是关注的图是否标准,碍于老品管的面子我不好当场说,事后我有发柏拉图做法给他。
回字有几种写法我不管,我只知道写教课书里的没错,另外兄弟我不管签名还是考试只用楷体字。

我来这边本来就是讨教excel做法的,我没有强迫谁一定要按我要求做出来啊,大家来这边是讨论excel技术的阿。
退一万步讲就算我的错,如果能一键搞定还可以修改阿,到时候发出来大家都沾光,网上一款软件专门画柏拉图的80元,谁愿意这个价格买。
结果碰到一件兄教诲我柏拉图的标准来了。

确定标准后我会发给HLAI老师柏拉图画法,(从零开始,从第一个柱子右上角开始小弟都可以画〉,
但为了不给HLAI老师添麻烦还请澄清标准。请费心为广大小Q们做贡献了。

[ 本帖最后由 qamiao 于 2010-5-3 23:23 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-3 22:50 | 显示全部楼层
到这里来,意外了解到了柏拉图画法国内参照标准了。
HLAI老师,谢谢,能否发这份资料给小弟。说不定我还可以在里面学到其他东西。
另外,里面又说没有参照的国际标准是哪个?

兄弟的邮箱:austin_miao@163.com.
拜托啦。

TA的精华主题

TA的得分主题

发表于 2010-5-5 13:07 | 显示全部楼层
首先申明本人对帕拉图不了解,只是对楼主附件图表的一个克隆。 1457.JPG

一键生成柏拉图.zip (21.33 KB, 下载次数: 102)



sheet1代码:
Private Sub CommandButton1_Click()
Pareto
End Sub



模块代码:
Sub Pareto()
Dim Myshe As Worksheet, Myra1 As Range, Myra2 As Range, Myrar As Range     '声明变量
Set Myshe = Application.ActiveSheet     '设置对象
Set Myra1 = Myshe.Range("C11:G12")     '设置对象
Set Myra2 = Myshe.Range("B14:G14")     '设置对象
Myra1.Sort key1:=Myra1.Cells(2, 1), Order1:=xlDescending, header:=xlGuess, _
      Orientation:=xlSortRows   '设置按由高到低排序
Set Myrar = Union(Myra1, Myra2)     '设置对象返回多块区域
'以下为调用函数-----------------------------------------------------------
MyChart MyChart_Name:="我的Pareto图表", MyChart_Source:=Myrar, MyChart_Plotby:=xlRows, _
        MyChart_Title:=False, MyTypeName:="两轴线-柱图"

End Sub

Function MyChart(Optional ByVal MyChart_Name As String = "我的图表", Optional ByVal MyChart_Type As XlChartType = xlColumnClustered, _
   Optional ByVal MyChart_Source As Range = Nothing, Optional ByVal MyChart_Plotby As XlRowCol = xlRows, _
   Optional ByVal MyChart_Title As Boolean = True, Optional ByVal MyChart_TitleText As String = "标题", _
   Optional ByVal MyChart_HasLegend As Boolean = False, _
   Optional ByVal MyChart_Left As Integer = 420, Optional ByVal MyChart_Top As Integer = 250, _
   Optional ByVal MyChart_Width As Integer = 300, Optional ByVal MyChart_Height As Integer = 200, _
   Optional ByVal MyTypeName As String = "") As Boolean
Dim Mych As ChartObject     '声明变量为嵌入式图表对象
On Error Resume Next     '如出错,则从出错行下一行开始执行
Set Mych = ActiveSheet.ChartObjects(MyChart_Name)     '设置对象
'MsgBox Err.Number
If Err.Number <> 0 Then    '设置对象出错,没有对象
   Set Mych = ActiveSheet.ChartObjects.Add(MyChart_Left, MyChart_Top, MyChart_Width, MyChart_Height)     '添加嵌入图表,设置对象
   Mych.Name = MyChart_Name     '设置对象名称
End If
Err.Clear   '清除Err对象
On Error GoTo Myerr     '如出错,则执行Myerr语句

With Mych.Chart
   .ChartType = MyChart_Type      '图表类型为xlLineMarkers_数据点折线图
   .SetSourceData Source:=MyChart_Source, PlotBy:=MyChart_Plotby     '为指定图表设置源数据区域
   If MyTypeName <> "" Then .ApplyCustomType ChartType:=xlBuiltIn, TypeName:=MyTypeName   '设置图表为自定义图表

   .HasLegend = MyChart_HasLegend     '为False ,图表没有图例
   .HasTitle = MyChart_Title    '图表标题,可见则为 True
   If MyChart_Title Then .ChartTitle.Characters.Text = MyChart_TitleText     '图表标题文本
   '.ChartTitle.Characters.Font.Size = 12      '设置标题的字号

   .HasAxis(xlCategory, xlSecondary) = True     '设置图表中的次坐标轴(X轴)_显示
   With .Axes(xlValue)      '设置图表单个坐标轴_主坐标轴(Y轴)
     .MaximumScale = 100     '设置图表_主坐标轴(Y轴)刻度最大值
     .MajorUnit = 20      '设置图表_主坐标轴(Y轴)主要刻度单位
   End With
   With .Axes(xlValue, xlSecondary)      '设置图表单个坐标轴_次坐标轴(Y轴)
     .MaximumScale = 1     '设置图表_次坐标轴(Y轴)刻度最大值
     .MajorUnit = 0.2      '设置图表_次坐标轴(Y轴)主要刻度单位
     .TickLabels.NumberFormat = "0%"     '设置图表_次坐标轴(Y轴)数字格式为%
   End With
   With .Axes(xlCategory, xlSecondary)     '设置图表中的次坐标轴(X轴)
      .TickLabelPosition = xlNone     '设置图表中的次坐标轴(X轴)_无标签
      .MajorTickMark = xlInside     '设置图表中的次坐标轴(X轴)_主刻度线在内侧
      .AxisBetweenCategories = False     '设置图表中的次坐标轴(X轴)_数值在刻度线上
   End With
   With .ChartGroups(1)     '返回图表中单个图表组
        .GapWidth = 0     '柱形簇之间的距离
        .VaryByCategories = True     '对每个数据标志指定不同的颜色或模式
   End With
   With .SeriesCollection(2)
      .ApplyDataLabels ShowValue:=True     '系列2_显示数据标签
      .MarkerBackgroundColorIndex = 46     '系列2_数据标记背景色为红色
      .MarkerSize = 7     '系列2_数据标记大小为7磅
      .Points(.Points.Count).DataLabel.Delete     '系列2_最后1个数据标签不显示
      .Points(1).DataLabel.Delete     '系列2_第1个数据标签不显示
   End With

End With
Mych.Activate     '对象激活
MyChart = True     '本函数返回True
Exit Function     '退出函数

Myerr:
   MyChart = False     '本函数返回False
End Function





郑重声明:本人从来看贴不回贴,文化程度极低,基本文盲,上网主要是学识字和打字,可能因为微机中毒来到本论坛,为了不引起不必要的误会和纠纷,特在此郑重声明,声明如下:

1.
本人是文盲,以上内容文字均不认识,也看不懂是什么意思。

2.
此事与本人一点关系都没有,本人过去、现在以及将来都不认识楼主,且自古以来与楼主无任何利益关系。本人过去、现在以及将来都没有且不准备与楼主有任何生意或业务或人事或复仇关系。楼主表述之事与本人无关,只是本着看贴(虽然看不懂)回贴,利人利己的中华民族优秀传统美德,顺便赚几个积分。
3.
本人在此留言均为网络上复制,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能。并不代表本人局部或全部同意、支持或者反对楼主观点。
4.
本回贴不暗示、鼓励、支持或映射读者作出生活方式、工作态度、婚姻交友、子女教育的积极或消极判断。
5.
如本人留言违反国家有关法律,请网络管理员及时删除本人跟贴。

6.
因删贴不及时所产生的任何法律(包括括宪法,民法,刑法,书法,公检法,基本法,劳动法,婚姻法,输入法,没办法,国际法,今日说法,吸星大法,与台湾关系法及文中涉及或可能涉及以及未涉及之法,各地治安管理条例)纠纷或责任本人概不负责。
7.
本人谢绝任何跨村、跨乡、跨县、跨市、跨省、跨国、跨地球、跨银河系抓捕行为,如有需要请直接联系楼主、原作者以及网络管理员或法人代表。
8.
以上内容全部来自互联网,完全复制粘贴。看帖者请于24小时内自觉、主动、被动、完全忘记。跟帖行为并不意味本人同意、支持、反对,或了解、知晓文中观点,如有任何疑问请直接联系原作者本人。
9.
此声明最终解释权归本人所有。

TA的精华主题

TA的得分主题

发表于 2010-5-5 13:46 | 显示全部楼层
个人觉得没必要一键生成的,但想法还是很独特。简单就好

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-5 23:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiulongpo兄,

多谢指教,本周末,我将在家里潜心研究你的代码,
不懂之处会联系您,还望不吝赐教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-5 23:56 | 显示全部楼层
jiulongpo兄,

第4点没有实现,
4.左侧数量上限等于不良总量(图中为100),刻度分为5份。
可以手动该,不过减少了好多步骤了,谢谢。

你勇于探索,不怕繁琐,做实事的精神令人敬佩。
代码够我这刚接触VBA的小弟研究好长时间了。

TA的精华主题

TA的得分主题

发表于 2010-5-6 08:58 | 显示全部楼层
原帖由 qamiao 于 2010-5-5 23:56 发表
jiulongpo兄,

第4点没有实现,
4.左侧数量上限等于不良总量(图中为100),刻度分为5份。
可以手动该,不过减少了好多步骤了,谢谢。

。。。。。。

已有更新:
一键生成柏拉图01.zip (21.4 KB, 下载次数: 121)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-14 06:34 , Processed in 0.052467 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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