0

コンマで区切られた値 (整数 [0-20]) を含む 4 つの列 (V1 V2、V3 V4) が入力された Excel 2007 スプレッドシートがあります。値は連続している必要はありません。
Excel スプレッドシート: サンプル データと出力
その行の前の 4 つの列のうち少なくとも 2 つに整数が含まれている場合、セルに整数のみが含まれる新しい列 (newV など) を作成したいと思います。これは、Excel 内の数式またはマクロで実行できますか? もしそうなら、これにアプローチする良い方法は何ですか?ありがとうございました。

4

1 に答える 1

2

各値が各セルに 1 回しか表示されない場合:

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 Tester()
    debug.print IfAtLeast(Activesheet.Range("A2:D2"), 2)
End Sub
于 2013-01-09T17:26:08.167 に答える