内容导航:


一、excelvba修改代码


Private Sub UserForm_Initialize()
Dim I%, X&, Y%, Z%
With ListView1
.BorderStyle = 1 'ccFixedSingle '设置边框样式。
.View = 3 'lvwReport '设置 View 属性为报表型(表格)。
.Gridlines = True
.HoverSelection = True
.FullRowSelect = True
End With
With Sheets("材料")
Z = .Range("A1").End(xlToRight).Column
For I = 2 To Z '加列标题
ListView1.ColumnHeaders.Add , , .Cells(1, I), ListView1.Width / Z
Next I
For X = 1 To .Cells(65536, 2).End(xlUp).Row - 1 '加行数据
ListView1.ListItems.Add X, , .Cells(X + 1, 2)
For Y = 2 To Z '加列数据
ListView1.ListItems(X).SubItems(Y) = .Cells(X + 1, Y)
Next Y
Next X
End With
ComboBox1.List = Array("白", "绿")
ComboBox2.List = Array("T", "kg")
End Sub


二、请帮忙修改一下EXCEL代码


请注意看回答最后一段

对方给你的算法是可行的。

把公式里的$100都改为$120000,$200都改为$240000,就可以了。

但是还有一个算法是这样:(按20万行设计)

C1数组公式=MIN(IF(A:A>6,ROW(A:A),9^9))-1

C2数组公式=MAX(1,IF(C2>1,1,-1+INDEX(FREQUENCY(ROW($1:$34),SMALL(IF(A$1:A$200000>6,ROW(A$1:A$200000),9^9),COUNTIF(C$1:C2,1)+1)),1)-INDEX(FREQUENCY(ROW($1:$34),SMALL(IF(A$1:A$200000>6,ROW(A$1:A$200000),9^9),COUNTIF(C$1:C2,1))),1)))

B1普通公式

=IFERROR(1/(1/SUM(OFFSET(A$1,SUM(C$1:C1),,C2,1))),"")

B1和C2都向下填充。

B1这个算法,是我推测你原来的表格应该不是真的是A,只是用A表示一些大于6的数字,需要不计算而在此显示并分段。

但如果真的是字母"A",那B列公式应该是:

=IF(SUM(D$1:D1)>=COUNTA(A:A),"",IFERROR(1/(1/SUM(OFFSET(A$1,SUM(D$1:D1),,D2,1))),"A"))


其实这个问题,用公式不方便,数组计算效率低还容易错,容错性也低。

不如用vba计算,肯定更加合理。

我试了一下,11万条数据,12核i7,公式算55分钟,vba算2秒。

Sub 汇总()

Application.ScreenUpdating = 0

Application.Calculation = xlCalculationManual

Dim r&, x&, i&

r = 1

For i = 1 To 2000

If Cells(i, 1) > 6 Then

Cells(r, 2) = Cells(i, 1): r = r + 1

Else

x = x + Cells(i, 1)

If Cells(i + 1, 1) > 6 Then Cells(r, 2) = x: x = 0: r = r + 1

End If

Next

Application.ScreenUpdating = 1

Application.Calculation = xlCalculationAutomatic

End Sub



三、excel怎么自定义格式的常用代码


excel中自定义格式的常用代码使用规则

1、G/通用格式,是指不设置任何格式,按原始输入的数值显示

2、#是指数字占位符,只显示有效数字,不显示无意义的零值

3、0也是数字占位符,当数字比代码的数量少时,显示为无意义的0,如下图所示在自定义格式中设置0000.00,在单元格中输入不同的数值显示效果如下

4、#和0组合使用经常用于带小树的数字格式,在自定义格式中分别输入#0.0,#.0显示效果如下,注意左边和右边两列显示的微小区别,如果#.0这样设置,当个位没有数字时,只有小数位时,个位没有显示0,因为#只显示有效数字,即单元格中输入的数字,另外这两种格式设置都遵循四舍五入的原则。

5、?是另一种数字占位符,作用是在小数点两侧增加空格,效果有点像word标尺中的小数点对齐,下图是?和0结合的用法,从现实效果中可以看到 小数点位是对齐的

6、.代表小数点,%现实为百分数,,代表千分位分隔符,E代表科学计数符号,代表显示格式的下一个字符,*代表重复下一个字符填充列宽,_代表留出与下一个字符等宽的空格,文本显示装银行里的文本

7、@文本占位符,如果只用一个@,作用是引用原始文本,即在单元格中输入的文本用@代替,如果使用多个@,可以重复单元格中输入的文本

8、[颜色] 注意[颜色] 应放在数字占位符的前面设置,中文本中用中文,英文版中用英文

9、[条件值] 一般设置顺序是这样的[条件值][颜色] 数字占位符 [颜色]的位置可以使其他显示格式