0

特定の値を持つすべてのセルを検索し、見つかったセルと同じ行のColumn L値を返したいと考えています。Column D

これまでのところ、リストの一番上にある 1 つの結果しか返すことができませんが、使用するコードがわからない残りのすべても検索したいと考えています。

さらに説明すると、セルD11の値は、シート「マスターリスト」の列Lで見つけたい値です。おそらく、セル内の値を見つけて、セル内L13の値を返し、wsのセル " " に入れたいL15とします。注: いいえ。値を持つセルの数は異なる場合があるため、返される値は下から表示されます (自動複数選択、コピー アンド ペーストなど)。L20D13D15D20C37:C39C37

ボールを転がし始めるためのちょっとしたことを次に示します。

Sub FindRelatedProducts()
Dim cell As Excel.Range
Dim D11Value As Variant
Dim D11Row As Variant
Dim ws As Worksheet: Set ws = Sheets("RShip")

Set cell = ws.Range("D11")
    D11Value = cell.Value
    With Sheets("Master List")
        D11Row = Application.Match(D11Value, .Range("L:L"), 0)
        If Not IsError(D11Row) Then
          ws.Range("C37") = .Range("D" & D11Row).Value
        End If
    End With
End Sub
4

1 に答える 1

1

範囲変数を使用した例を次に示します。

入力データ範囲の範囲と出力データの範囲を定義する必要があります。次に、VBA でwrkinRngおよびoutRng変数を定義した名前付き範囲に変更し、forおよびifブロックの列インデックスを、探しているデータの列インデックスと一致するように変更します。

Option Explicit
Option Base 1

Sub FindValues()
    Dim wrk As Worksheet
    Dim inRng As Range
    Dim outRng As Range

    Dim cntr As Long
    Dim outCntr As Long
    Dim findVal As Double

    Set wrk = Worksheets("Data")
    Set inRng = wrk.Range("LookupRange")
    Set outRng = wrk.Range("OutputRange")

    ' Clear the output range in case you have fewer values on this run than on the previous one
    outRng.ClearContents

    ' Set the value you are looking for
    findVal = 1

    ' Iterate through the rows in the input range.  If you find the result you want then write it to the output range
    For cntr = 1 To inRng.Rows.Count
        If inRng(cntr, 1) = findVal Then ' Assumes the value you are finding is in column 1 of the input range
            outRng(outCntr, 1) = inRng(cntr, 2) ' Assumes the values you are exporting is in column 2 of the input range
            outCntr = outCntr + 1
        End If
    Next cntr
End Sub
于 2013-08-28T22:39:50.487 に答える