2

I'm having real trouble trying to get this to work for me. To help explain what I need to do I've produced a (hopefully) very simple example below...

What I would like to do is:

  • Within a range of cells A:A find J Bloggs (note there can be multiple entries and I need all of them)
  • When an order from J Blogs is found copy his order date B1, request del. date C1 and actual del. date D1
  • Paste this information into a table G1:J4

NB: The list of customers can be long, and some customers may make seperate orders. I need to generate a list of all of these orders (don't need to check if date is in the past etc.).

Each time the query is run, say this time for H Simpson, only the details for H Simpson will appear in the table 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      |  
+---------------+----------------+---------------------+------------------+
4

3 回答 3

1

至少有三种不同的方法:

  1. 使用自动筛选
  2. 使用宏提取数据
  3. 使用 VLOOKUP()

此处解释了使用 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

于 2013-09-06T11:06:14.017 回答
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

前:

在此处输入图像描述

后:

在此处输入图像描述

于 2013-09-06T11:06:10.637 回答
0

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

SO18655770 示例

于 2013-09-06T11:17:42.133 回答