既然赋值 Range("A1:a10")到数组Arrdata了,就不要写下面的《For Each Rng In Range("A2:A" & UBound(Arrdata))'》了。你该用循环调用数组里的数据了,而不是再回到单元格。应该这样写:
Arrdata=Range("A1:a10")
for x = 1 to UBound(Arrdata)
'这里写你需要的内容,如
mm =Arrdata(x,1) 'mm取得数组第x行第一列的数值
‘………………
next x
Dim Rng As Range, SJ
Arrdata = Range("A1:a10")'这里本来是Arrdata = Range("A1").CurrentRegion,但是我有时候数据不在这个区域
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "[一-龢]+|[a-zA-Z]+|[\d+]+|[\s+]+|[^一-龢a-zA-Z0-9\s]+|"
For Each Rng In Range("A1:a10" & UBound(Arrdata)) '这下面的我还是理解不成,太笨了,这是一位老师帮我写的代码我想改成固定区域的
If .test(Rng) Then
For x = 0 To Len(Rng)
Range("g3").Offset(0, (x + 1) - 1) = .Execute(Rng)(x)
Next
Else
For x = 0 To Len(Rng)
Range("g3").Offset(0, (x + 1) - 1) = Rng
Range("g3").Offset(0, (x + 1) - 1) = ""
Next
End If
Next
End With
976190982 发表于 2021-1-2 14:09
Dim Rng As Range, SJ
Arrdata = Range("A1:a10")'这里本来是Arrdata = Range("A1").CurrentReg ...
Dim Rng As Range, SJ
Arrdata = Range("A1:a10") '这里本来是Arrdata = Range("A1").CurrentRegion,但是我有时候数据不在这个区域
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "[一-龢]+|[a-zA-Z]+|[\d+]+|[\s+]+|[^一-龢a-zA-Z0-9\s]+|"
For Each Rng In Range("A1:a10" & UBound(Arrdata)) '这下面的我还是理解不成,太笨了,这是一位老师帮我写的代码我想改成固定区域的
k = k + 1
If .test(Rng) Then
For x = 0 To Len(Rng)
On Error Resume Next '遇错误继续
Range("g3").Offset(x, k) = .Execute(Rng)(x)
Next
End If
Next
End With
这样能拆分。加了k,加了On Error Resume Next,改了offset(),删除了else,那个else一点用都没有。另外说两点,一是我对正则只是看了看,没用过。二是for Each Rng In Range("A1:a10" & UBound(Arrdata))区域的范围是A1:a1010