任意の助けをいただければ幸いです。これはよくある質問のように見えますが、vba では見つかりませんでした。これが私のベストショットです:
Dim oppositeRow As Long
.....
oppositeRow = WorksheetFunction.Match(ddate & campaign, "A3:B62", 0)
一致する結果が 1 つしかないことがわかっている場合は、Excel の数式として次の操作を実行できます。
=SUMPRODUCT(ROW(A2:A5), N("john"=A2:A5), N("smith"=B2:B5))
次のワークシートに適用されます。
AB 1 最初最後 2 ボブ・スミス 3 ジョン・スミス 4 ジョン・ブラウン 5サムブラウン
これは 3 を返します (john smith は 3 行目にあるため)。ヘッダー行があるため、テーブルにインデックスを取得するには 1 を引く必要があります。
これは、3 つのベクトルを乗算することで機能します。
ベクトルを要素ごとに乗算すると {0,3,0,0} が得られ、その合計は 3 です。
このような複雑な式を VBA で表現するのはやや面倒なので、純粋に VBA で行いたい場合は、カウンターを使用してループを実行し、条件に一致する行が見つかったインデックスを記録することをお勧めします。
編集:ここにいくつかのVBAコードがあります:
Dim index as Integer
For index = 1 to 4
If Range("A1").Offset(index).Value = "john" And Range("B1").Offset(index).Value = "smith" Then
Exit For
End If
Next index
DGET
行番号を表すために使用される列をワークシートに追加する限り、式を使用してこれを実現できます。
行 ID 列 1 列 2 1 ああああ 2 ビービー 3cc 4 D dd 5 ええ
式は次のとおりです。
=DGET(A1:C6;1;E1:F2)
これは、上記のデータが次の場所にあることを前提としてA1:C6
います。検索条件を含む以下のデータ ブロックは、次の場所に配置されています。E1:F2
列 1 列 2 Ccc
上記の式の戻り値DGET
は「3」です。
数式を実行する前に、VBA メソッドが適切な検索条件をセルに配置する場合は、純粋に VBA でこれを行うことができますE2
。F2
DGET