需求和目的
自己写的可以把指定的多行数据,生成一行数据
(1) 需要可以把不同的EXCEL段的,多个ID+数量,结合起来生成一个字符串数组输出
(2)为什么不用公式,而用VBA,因为需要让表中的行可以随便剪贴调整,EXCEL公式会追踪 行列,一旦操作行等就会乱
(3)我加了一个标记位,Q列上,必须有S的标记的,才会去搜索 S.row+1 这部分行的数据
(4)要求分段,每次只能找 S.row+1下面的一定行
代码
- 主要处理sub
- 函数1:通过 s.row+1 找到l1对应的h1,h1.row ,注意VBA的函数返回不是用return,而是用 函数名=xx
- 函数2: 把找到的多行数据,处理问 11101:100,10002:50 这样的形式
- 字符串的累加, x="" for x=x+i
Sub sorted_export()
Dim sh1 As Object
Dim rng1 As Object
Dim arr1()
tag0 = "S" '慎用0
k = 1
Set sh1 = ActiveSheet 'Worksheets("礼包输出")
maxr1 = sh1.Range("q65535").End(xlUp).Row
Set rng1 = sh1.Range("q1:q" & maxr1)
maxc1 = WorksheetFunction.CountA(rng1)
ReDim arr1(0 To maxr1)
For Each c1 In rng1
If c1 = tag0 Then
Debug.Print c1.Row + 1
l1 = c1.Row + 1
h1 = sorted(c1.Row + 1)
aaa = export(l1, h1)
k = k + 1
End If
Next
End Sub
Function sorted(r1)
Dim sh1 As Object
maxr1 = Range("e" & r1).End(xlDown).Row
Debug.Print maxr1
sorted = maxr1
End Function
Function export(l1, h1)
Dim arr1()
ReDim arr1(0 To h1 - l1) '非常数的只能redim ,0和1.。。。
k = 0
For i = l1 To h1
a = Range("e" & i) & "|" & Range("g" & i)
Debug.Print a
arr1(k) = a
k = k + 1
Next
x = ""
For i = 0 To h1 - l1 - 1
arr1(i) = arr1(i) & ","
Debug.Print arr1(i)
x = x + arr1(i)
Next
Range("r" & l1 - 1) = x & arr1(h1 - l1)
End Function