永发信息网

vba 遍历sheet1的B列数据(数据为字符串)

答案:1  悬赏:0  手机版
解决时间 2021-11-30 17:41
vba 遍历sheet1的B列数据(数据为字符串)
最佳答案
楼主,你说的这个操作,有简便的方法,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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列说法正确的是A.电力、蒸汽都属于二次能源
华硕笔记本的蓝牙怎么用
健一生家佳康大药房状元府店地址在哪,我要去
800米跑穿钉鞋的好处和坏处各是什么?用长钉
flash不更新会怎样
里外都是的四字词
1998年九月初九出生的幸运花是什么
形容女子贤惠的成语有哪些
乐山 有个庙宇,其前有道擂星门,后改为一所
有没有PS高手 急 谢谢
用方框里的英语单词的正确形式完成句子。
求AB支座的支座反力
solidworks怎么画带有斜度的皮条?
整整干了一个星期的苦差事苦差事具体指的是什
我已经仲裁了公司,现在还可以再向劳动监察大
推荐资讯
求救!!cad转成pdf或jpg 要真实尺寸 1:1(要
到底谁是大隋第一勇士
如何选无痕文胸?
295除以47验算怎么验
舅舅在自家外甥满周岁时说什么祝福语
古诗译成英文,再译回中文将会怎样
cx870航班机型77w是什么意思
画龙点晴中为什么龙会活?
新品上市 motorola/摩托罗拉 xt1570 moto
ug7 怎么导入默认设置 未被识别
以一把雨伞为话题的作文题目。。。。。。。。
一个男人经常在夜间11_12点联系你,会有什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?