VBA找单元格奇数次数
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 23:03:50
VBA找单元格奇数次数
假定某单元格数据是19(127),236(15),0(4),8(3),45(2),7(0),其中小括号外的是具体数字,小括号内部是其次数,次数相同的已经放在一起,不同的用逗号隔开.上述数据表示1和9都是127次;2,3,6都是15次;0是4次,8是3次,4,5是2次,7是0次,现在要求将次数为奇数的数字找出来,19的次数是奇数,所以19符合,236的也符合,0的次数是4,不符合,8的次数是3,符合,4和5的次数是2,不符合,7也不符合,所以总的符合要求的数字就是192368 要求使用自定义函数,这样我可以对想统计的单元格进行调用,形式:
Function JiShu(r,c) 'r表示行号,c表示列号
代码
End Function
假定某单元格数据是19(127),236(15),0(4),8(3),45(2),7(0),其中小括号外的是具体数字,小括号内部是其次数,次数相同的已经放在一起,不同的用逗号隔开.上述数据表示1和9都是127次;2,3,6都是15次;0是4次,8是3次,4,5是2次,7是0次,现在要求将次数为奇数的数字找出来,19的次数是奇数,所以19符合,236的也符合,0的次数是4,不符合,8的次数是3,符合,4和5的次数是2,不符合,7也不符合,所以总的符合要求的数字就是192368 要求使用自定义函数,这样我可以对想统计的单元格进行调用,形式:
Function JiShu(r,c) 'r表示行号,c表示列号
代码
End Function
Function JiShu(r, c) 'r表示行号,c表示列号
arr = Split(Trim(Cells(r, c).Value), ",")
m = UBound(arr)
For i = 0 To m
If Mid(arr(i), InStr(arr(i), "(") + 1, Len(arr(i)) - 1 - InStr(arr(i), "(")) Mod 2 = 1 Then
JiShu = JiShu & Mid(arr(i), 1, InStr(arr(i), "(") - 1)
End If
Next
End Function
多次修改代码.
Function JiShu(r, c) As String 'r表示行号,c表示列号
If Right(Trim(Cells(r, c).Value), 1) = "," Then
v = Left(Trim(Cells(r, c).Value), Len(Trim(Cells(r, c).Value)) - 1)
End If
arr = Split(v, ",")
m = UBound(arr)
For i = 0 To m
c = arr(i)
For j = 1 To Len(c)
If Mid(c, j, 1) = "(" Then
d = j
Exit For
End If
Next
ff = Val(Mid(c, d + 1, Len(c) - 1 - d))
If ff Mod 2 = 1 Then
kk = kk & Mid(c, 1, d - 1)
End If
Next
JiShu = kk
End Function
原来数据后面是带一个逗号的.
arr = Split(Trim(Cells(r, c).Value), ",")
m = UBound(arr)
For i = 0 To m
If Mid(arr(i), InStr(arr(i), "(") + 1, Len(arr(i)) - 1 - InStr(arr(i), "(")) Mod 2 = 1 Then
JiShu = JiShu & Mid(arr(i), 1, InStr(arr(i), "(") - 1)
End If
Next
End Function
多次修改代码.
Function JiShu(r, c) As String 'r表示行号,c表示列号
If Right(Trim(Cells(r, c).Value), 1) = "," Then
v = Left(Trim(Cells(r, c).Value), Len(Trim(Cells(r, c).Value)) - 1)
End If
arr = Split(v, ",")
m = UBound(arr)
For i = 0 To m
c = arr(i)
For j = 1 To Len(c)
If Mid(c, j, 1) = "(" Then
d = j
Exit For
End If
Next
ff = Val(Mid(c, d + 1, Len(c) - 1 - d))
If ff Mod 2 = 1 Then
kk = kk & Mid(c, 1, d - 1)
End If
Next
JiShu = kk
End Function
原来数据后面是带一个逗号的.