早教吧作业答案频道 -->其他-->
A列编号B列名称C列规格对应行相同合并在对应列D列数量对应相加用VBA怎样编写
题目详情
A列编号B列名称C列规格对应行相同合并在对应列D列数量对应相加用VBA怎样编写
▼优质解答
答案和解析
这个有些复杂,没分数吗?请增加悬赏分!
Private Sub CommandButton1_Click()
If MsgBox("警告!" & vbCrLf & _
"过程不可逆转,请做好备份!"& vbCrLf & vbCrLf & _
"开始执行程序吗?",vbInformation + vbOKCancel, _
"警告!")<> vbOK Then Exit Sub
Dim a, d, s, r, col, i, j, tmp
Dim c As Range, rg As Range
Set d = CreateObject("Scripting.Dictionary")
Set c = Cells(1, 1).Resize(1, 4) '标题行位置
r= Cells(65536, c.Column).End(xlUp).Row
If r <= c.Row Then
MsgBox "无数据!": Exit Sub
End If
a= c.Resize(r - c.Row + 1)
For i = LBound(a) + 1 To UBound(a)
tmp = Join(Array(a(i, 1), a(i, 2), a(i, 3)), "|")
If d.Exists(tmp) Then
d(tmp) = d(tmp) + a(i, 4)
Else
d(tmp) = a(i, 4)
End If
Next
s= d.keys
ReDim a(LBound(s) To UBound(s), 0 To 3)
For i = LBound(s) To UBound(s)
tmp = Split(s(i), "|")
For j = LBound(tmp) To UBound(tmp)
a(i, j) = tmp(j)
Next
a(i, 3) = d(s(i))
Next
With c.Offset(1)
.Resize(r - c.Row).ClearContents
.Resize(d.Count) = a
End With
End Sub
Private Sub CommandButton1_Click()
If MsgBox("警告!" & vbCrLf & _
"过程不可逆转,请做好备份!"& vbCrLf & vbCrLf & _
"开始执行程序吗?",vbInformation + vbOKCancel, _
"警告!")<> vbOK Then Exit Sub
Dim a, d, s, r, col, i, j, tmp
Dim c As Range, rg As Range
Set d = CreateObject("Scripting.Dictionary")
Set c = Cells(1, 1).Resize(1, 4) '标题行位置
r= Cells(65536, c.Column).End(xlUp).Row
If r <= c.Row Then
MsgBox "无数据!": Exit Sub
End If
a= c.Resize(r - c.Row + 1)
For i = LBound(a) + 1 To UBound(a)
tmp = Join(Array(a(i, 1), a(i, 2), a(i, 3)), "|")
If d.Exists(tmp) Then
d(tmp) = d(tmp) + a(i, 4)
Else
d(tmp) = a(i, 4)
End If
Next
s= d.keys
ReDim a(LBound(s) To UBound(s), 0 To 3)
For i = LBound(s) To UBound(s)
tmp = Split(s(i), "|")
For j = LBound(tmp) To UBound(tmp)
a(i, j) = tmp(j)
Next
a(i, 3) = d(s(i))
Next
With c.Offset(1)
.Resize(r - c.Row).ClearContents
.Resize(d.Count) = a
End With
End Sub
看了A列编号B列名称C列规格对应行...的网友还看了以下:
matlab怎样进行T检验怎样用matlab对y=bx+a进行T检验(检验常数项a是否等于0)置信区 2020-03-30 …
奥数行程问题甲乙二人分别从A、B两地相向而行,在距A地90千米处第一次相遇,在距A地50千米处第二次 2020-03-30 …
已知函数f(X)=x+a^2/x,g(x)=x+lnx,其中a>0若对任意的x1,x2∈[1,e] 2020-06-08 …
线性代数行阵乘以列阵怎么算?要求给出具体的算法!比如列(1-1-1)行(23-1)一个列阵一个行阵 2020-06-18 …
人教八年级上数学实数怎么进行分类?我有的时候会把有理数和无理数搞混比如:131/11是不是无理数? 2020-07-17 …
线性代数的一道题目若A的伴随矩阵=A的转置矩阵,为什么可以推得得到aij=Aij(这里的i和j为下 2020-07-24 …
如图,点P是函数y=4/x在第一象限的图像上的任意一点,点P关于原点的对称点是P’,过点P做PA平 2020-07-29 …
题目:二位数组a的每个元素是由6个字符组成的串,行下标i的范围从0-8,列下标j的范围是从1-10 2020-07-29 …
矩阵A的逆是(1/A的行列式)A*,前面1除以A的行列式是一个系数,请问一数字乘矩阵怎么算?(如果 2020-08-02 …
关于绝对值|-a|=a,a是()数老师说是非负数,但我觉得负数也可以呀,如果a=1,那|--1|=1 2021-01-22 …