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

 需求和目的

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

(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

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值