[英]Find cells within a range if one cell equals a criteria copy its value to another column
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: 我想做的是:
A:A
find J Bloggs
(note there can be multiple entries and I need all of them) A:A
找到J Bloggs
(请注意,可以有多个条目,而我需要所有这些条目) J Blogs
is found copy his order date B1
, request del. J Blogs
的订单时,请复制其订单日期B1
,请求del。 date C1
and actual del. C1
和实际del。 date D1
D1
G1:J4
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
每次运行查询时,例如这次对
H Simpson
,表H Simpson
G1:J4
只会显示H Simpson
的详细信息。
+---------------+----------------+---------------------+------------------+
| 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 |
+---------------+----------------+---------------------+------------------+
There are at least three different approaches: 至少有三种不同的方法:
Using VLOOKUP() to get more than one result is explained here: 此处说明了如何使用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 http://office.microsoft.com/en-us/excel-help/how-to-look-up-a-value-in-a-list-and-return-multiple-corresponding-values-HA001226038.aspx
Your lucky day! 你的幸运日! I had a free spare minutes and wrote this code for you.
我有空闲的空闲时间,并为您编写了此代码。
It will ask you for the Name
- you simply select the cell with the name you wan't to generate data for 它将要求您提供
Name
-您只需选择名称不想要为其生成数据的单元格
It will create a table in columns G:J
and stick in the results of matches in columns A:D
它将在
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
before: 之前:
after: 后:
I go with Vasim every time, eg: 我每次都与Vasim一起去,例如:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.