簡體   English   中英

如果一個單元格等於條件,則查找范圍內的單元格將其值復制到另一列

[英]Find cells within a range if one cell equals a criteria copy its value to another column

我真的很難讓它為我工作。 為了幫助解釋我需要做什么,我在下面制作了一個(希望)非常簡單的示例...

我想做的是:

  • 在一個單元格區域A:A找到J Bloggs (請注意,可以有多個條目,而我需要所有這些條目)
  • 當找到來自J Blogs的訂單時,請復制其訂單日期B1 ,請求del。 日期C1和實際del。 日期D1
  • 將此信息粘貼到表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      |  
+---------------+----------------+---------------------+------------------+

至少有三種不同的方法:

  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

你的幸運日! 我有空閑的空閑時間,並為您編寫了此代碼。

它將要求您提供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

之前:

在此處輸入圖片說明

后:

在此處輸入圖片說明

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

SO18655770示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM