VBA练习例子:把指定的多行数据,生成一行数据

 需求和目的

自己写的可以把指定的多行数据,生成一行数据

(1) 需要可以把不同的EXCEL段的,多个ID+数量,结合起来生成一个字符串数组输出

(2)为什么不用公式,而用VBA,因为需要让表中的行可以随便剪贴调整,EXCEL公式会追踪 行列,一旦操作行等就会乱

(3)我加了一个标记位,Q列上,必须有S的标记的,才会去搜索  S.row+1 这部分行的数据

(4)要求分段,每次只能找 S.row+1下面的一定行

 

VBA练习例子:把指定的多行数据,生成一行数据_第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

 

 

 

 

你可能感兴趣的:(#,VBA实验练习)