0

我想找到Column L具有特定值的所有单元格,并返回与Column D找到的那些单元格在同一行中的值。

到目前为止,我只能返回一个结果,这将是我列表中最重要的结果,但我也想找到所有其他结果,我不知道要使用的代码。

只是为了进一步解释:单元格D11中的值是我想在工作表“主列表”的 L 列中找到的值。假设我在单元格中找到了值L13L15并且L20,我想将单元格中的值返回D13D15ws的D20单元格“ ”中。C37:C39注意:没有。具有该值的单元格的数量可能会有所不同,因此返回的值只会从C37下方出现(例如自动多选、复制和粘贴)

这是开始滚动的一些东西:

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 中,您需要将wrk,inRngoutRng变量更改为您定义的命名范围,并更改forif块中的列索引以匹配您正在查找的数据的列索引。

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 回答