根据行中其他单元格的内容在Excel 2007中填充单元格

我有一个Excel 2007电子表格填充四个列(V1 V2,V3 V4),其中包含用逗号分隔的值(整数[0-20])。 价值观不一定是连续的。
Excel电子表格:示例数据和输出
我想创build一个新的列(例如newV),如果它的单元格包含在该行的前四列中的至less两列中,那么它的单元格只包含一个整数。 这可以用Excel中的公式或macros来完成吗? 如果是的话,这将是一个好办法吗? 谢谢。

如果每个值只能在每个单元格中出现一次:

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,那么使用子debugging问题通常更容易

 Sub Tester() debug.print IfAtLeast(Activesheet.Range("A2:D2"), 2) End Sub