我试图让这个为我工作真的很麻烦。为了帮助解释我需要做什么,我在下面制作了一个(希望)非常简单的例子......
我想做的是:
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 |
+---------------+----------------+---------------------+------------------+
答案 0 :(得分:1)
至少有三种不同的方法:
使用VLOOKUP()获取多个结果:
答案 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
之前:
之后:
答案 2 :(得分:0)
我每次都和Vasim一起去,例如: