我有一个 Excel 2007 电子表格,其中填充了四列(V1 V2、V3 V4),其中包含用逗号分隔的值(整数 [0-20])。值不必是连续的。
我想创建一个新列(例如newV),如果它包含在该行的前四列中的至少两列中,则其单元格仅包含一个整数。这可以通过 Excel 中的公式或宏来完成吗?如果是这样,解决这个问题的好方法是什么?谢谢你。
问问题
373 次
1 回答
2
如果每个值在每个单元格中只能出现一次:
Function IfAtLeast(rng As Range, num As Integer)
Const SEP As String = ","
Dim c As Range, d As Object, arr, i As Long, tmp, k
Dim rv As String
rv = ""
Set d = CreateObject("scripting.dictionary")
For Each c In rng
arr = Split(c.Value, SEP)
For i = LBound(arr) To UBound(arr)
tmp = Trim(arr(i))
If Not d.exists(tmp) Then d.Add tmp, 0
d(tmp) = d(tmp) + 1
Next i
Next c
For Each k In d.keys
If d(k) >= num Then rv = rv & IIf(Len(rv) > 0, ",", "") & k
Next k
IfAtLeast = rv
End Function
用法:
=IfAtLeast(A2:D2,2)
编辑:如果您在对 UDF 进行故障排除时遇到问题,那么使用 sub 调试问题通常更容易
Sub Tester()
debug.print IfAtLeast(Activesheet.Range("A2:D2"), 2)
End Sub
于 2013-01-09T17:26:08.167 回答