vba 遍历sheet1的B列数据(数据为字符串)
答案:1 悬赏:0 手机版
解决时间 2021-11-30 17:41
- 提问者网友:放下
- 2021-11-30 14:05
vba 遍历sheet1的B列数据(数据为字符串)
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-11-30 15:31
楼主,你说的这个操作,有简便的方法,excelhome上就有的,不过是要调用api,说实话,我不太懂那个,用的太少了,而且有的电脑调用api会出错,不要问我为什么,我都快被折磨死了。
如果是我做的话,我用了下面的方式撒...
Sub TEST()
Dim i As Long, k As Long
Dim Flag As Integer
Dim RowCt As Long
Dim arr() As String
Dim tmp As String
Dim brr() As String
arr = Split("A,E,F,G,P,Q", ",") '数组arr定义下
RowCt = Application.CountA(Sheet1.Range("B:B"))
'B列非空行的数量,方便下面的循环对比,不过这个方法适用于B列数据是连续的,如果2行中间有1个或多个空行,会导致B列后面有几行没有比较
'用下面方法可以避免上述问题,不细讲了,万用法,适用性高,记住吧
'RowCt=Cells(Rows.Count,"B").End(xlup).row
'开始循环了。。。
For i = 1 To RowCt
Flag = UBound(Filter(arr, Sheet1.Cells(i, "B")))
'Fliter作用是从中arr中筛选出B列的当前字符串,Ubound就是看数组的元素个数哈
'如果当前字符串在arr中,那么Flag=0。(等0是因为数组的第一个元素索引号是arr(0),如果在程序的开头限定了索引号从1开始,那么Flag=1)
‘不等于0,就表示不在arr中
If Flag <> 0 Then
tmp = Sheet1.Cells(i, "B").Value & "," & tmp
'对于不在arr中的字符,先用tmp连接起来
k = k + 1
End If
Next i
'将tmp传送给数组brr,和上面arr定义方法是一样的。不过brr最后一个元素是空的
'如果不想是空,可以先对tmp处理下,如tmp=left(len(tmp)-1),把最后一个“,”去掉
brr = Split(tmp, ",")
'下面是为了把brr表示出来,注意看下索引号的变化,不细说了
'主要还是因为brr最后一个元素是空,下面的方法没有要最后的元素的
For i = 1 To UBound(brr)
Sheet1.Cells(i, "G") = brr(i - 1)
Next i
End Sub
如果是我做的话,我用了下面的方式撒...
Sub TEST()
Dim i As Long, k As Long
Dim Flag As Integer
Dim RowCt As Long
Dim arr() As String
Dim tmp As String
Dim brr() As String
arr = Split("A,E,F,G,P,Q", ",") '数组arr定义下
RowCt = Application.CountA(Sheet1.Range("B:B"))
'B列非空行的数量,方便下面的循环对比,不过这个方法适用于B列数据是连续的,如果2行中间有1个或多个空行,会导致B列后面有几行没有比较
'用下面方法可以避免上述问题,不细讲了,万用法,适用性高,记住吧
'RowCt=Cells(Rows.Count,"B").End(xlup).row
'开始循环了。。。
For i = 1 To RowCt
Flag = UBound(Filter(arr, Sheet1.Cells(i, "B")))
'Fliter作用是从中arr中筛选出B列的当前字符串,Ubound就是看数组的元素个数哈
'如果当前字符串在arr中,那么Flag=0。(等0是因为数组的第一个元素索引号是arr(0),如果在程序的开头限定了索引号从1开始,那么Flag=1)
‘不等于0,就表示不在arr中
If Flag <> 0 Then
tmp = Sheet1.Cells(i, "B").Value & "," & tmp
'对于不在arr中的字符,先用tmp连接起来
k = k + 1
End If
Next i
'将tmp传送给数组brr,和上面arr定义方法是一样的。不过brr最后一个元素是空的
'如果不想是空,可以先对tmp处理下,如tmp=left(len(tmp)-1),把最后一个“,”去掉
brr = Split(tmp, ",")
'下面是为了把brr表示出来,注意看下索引号的变化,不细说了
'主要还是因为brr最后一个元素是空,下面的方法没有要最后的元素的
For i = 1 To UBound(brr)
Sheet1.Cells(i, "G") = brr(i - 1)
Next i
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯