如果一个单元格等于条件,则查找范围内的单元格将其值复制到另一列

时间:2013-09-06 10:35:22

标签: excel vba excel-vba

我试图让这个为我工作真的很麻烦。为了帮助解释我需要做什么,我在下面制作了一个(希望)非常简单的例子......

我想做的是:

  • 在一系列单元格中A:A找到J Bloggs(请注意,可能有多个条目,我需要所有条目)
  • 当找到J Blogs的订单时,请复制其订单日期B1,请求del。日期C1和实际德尔。日期D1
  • 将此信息粘贴到表格G1:J4

注意:客户列表可能很长,有些客户可能会分开订单。我需要生成所有这些订单的清单(不需要检查日期是否过去等)。

每次运行查询时,请说明H Simpson这一次,H Simpson的详细信息只会显示在表G1:J4

+---------------+----------------+---------------------+------------------+  
|   Customer    |   Order Date   | Requested Delivery  | Actual Delivery  |  
+---------------+----------------+---------------------+------------------+  
| J Bloggs      | 01/01/2013     |  02/01/2013         |  02/01/2013      |  
| H Simpson     | 05/01/2013     |  08/01/2013         |  09/01/2013      |  
| A Name        | 10/01/2013     |  10/01/2013         |  10/01/2013      |   
| J Bloggs      | 15/01/2013     |  22/01/2013         |  22/01/2013      |  
+---------------+----------------+---------------------+------------------+

3 个答案:

答案 0 :(得分:1)

至少有三种不同的方法:

  1. 使用AutoFilter
  2. 使用宏来提取数据
  3. 使用VLOOKUP()
  4. 使用VLOOKUP()获取多个结果:

    http://office.microsoft.com/en-us/excel-help/how-to-look-up-a-value-in-a-list-and-return-multiple-corresponding-values-HA001226038.aspx

答案 1 :(得分:0)

你的幸运日!我有一个免费的空闲时间,并为您编写了这段代码。

它会询问您Name - 您只需选择名称为您不想为其生成数据的单元格

它会在G:J列中创建一个,并在A:D列中匹配结果

Sub Findining()

    Dim r As Range, i As Long, j As Long, rng As Range
    Range("G:J").ClearContents
    For i = 1 To 4
        Cells(1, i + 6) = Cells(1, i)
    Next i
    Set r = Application.InputBox("Select Name", Type:=8)
    If r.Columns.Count > 1 Or r.Rows.Count > 1 Then
      Do Until (r.Columns.Count = 1 And r.Rows.Count = 1)
        MsgBox "You can only select 1 name"
        Set r = Application.InputBox("Select Name", Type:=8)
      Loop
    End If

    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        Set rng = Range("A" & i)
        If StrComp(r, rng, vbTextCompare) = 0 Then
            For j = 0 To 3
                Cells(Cells(Rows.Count, rng.Offset(0, 6 + j).Column).End(xlUp).Row + 1, rng.Offset(0, 6 + j).Column).Value = rng.Offset(0, j).Value
            Next j
        End If
        Set rng = Nothing
    Next i
    Columns.AutoFit
End Sub

之前:

enter image description here

之后:

enter image description here

答案 2 :(得分:0)

我每次都和Vasim一起去,例如:

SO18655770 example