簡體   English   中英

匹配 ID 表和具有多行相同 ID 的表中的元素

[英]Match elements from ID table and table with multiple rows of same ID

我有以下兩個電子表格:

輸入

我的目標是,在第三個電子表格上,獲取右側的表格,但僅使用左側表格中的 ID,即:

輸出

這似乎在 VBA

Sub Pandemic()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Long, x As Long, lr As Long
Dim DeleteMe As Range
Dim Flag As Boolean


'Target Values
Dim target
target = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row).Value

'Table With All Values
Dim source As Range
lr = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
Set source = ws.Range("C2:D" & lr)

'Create Copy of Table
source.Copy ws.Range("F2")


For i = 2 To lr

    Flag = False

    For x = LBound(target) To UBound(target)
        If ws.Range("F" & i) = target(x, 1) Then
            Flag = True
        End If
    Next x
    
    If Not Flag Then
        If Not DeleteMe Is Nothing Then
            Set DeleteMe = Union(DeleteMe, ws.Range("F" & i).Resize(1, 2))
        Else
            Set DeleteMe = ws.Range("F" & i).Resize(1, 2)
        End If
    End If
    
Next i

If Not DeleteMe Is Nothing Then DeleteMe.Delete

End Sub
 

作為參考,這些是我測試的范圍。 您將不得不相應地更新范圍和工作表引用。

  1. 左表包括目標 ID
  2. 中間表是完整的值列表
  3. 最終表是宏 output(從左表中刪除 ID 缺失的行)

在此處輸入圖像描述

假設您的范圍是“表”,您可以使用 Power Query:

M代碼

let
    Source = Excel.CurrentWorkbook(){[Name="idValTbl"]}[Content],
    tbl1 = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Value", Int64.Type}}),
    Source2 = Excel.CurrentWorkbook(){[Name="idTbl"]}[Content],
    tbl2 = Table.TransformColumnTypes(Source2,{"ID", type text}),
    join = Table.AddJoinColumn(tbl2,"ID",tbl1,"ID","joined"),
    #"Expanded joined" = Table.ExpandTableColumn(join, "joined", {"Value"}, {"Value"})
in
    #"Expanded joined"

更改第 2 行和第 4 行中的表名,以反映上面顯示的表 2 和表 1 的工作簿中的真實表名。

在此處輸入圖像描述

暫無
暫無

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

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