【问题标题】:Match elements from ID table and table with multiple rows of same ID匹配 ID 表和具有多行相同 ID 的表中的元素
【发布时间】:2021-02-11 16:12:16
【问题描述】:

我有以下两个电子表格:

我的目标是,在第三个电子表格中,获取右侧的表格,但只能获取左侧表格中的 ID,即:

【问题讨论】:

  • 如果你是幸运儿之一,请使用FILTER()函数
  • FILTER() 在我的 excel 版本中不可用
  • 那么我认为你需要 VBA 来完成这个
  • 通过.AddJoinColumn使用电源查询

标签: excel excel-formula excel-2010 excel-2013


【解决方案1】:

这似乎在 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. 最终表是宏输出(从左表中删除 ID 缺失的行)

【讨论】:

    【解决方案2】:

    假设您的范围是“表格”,您可以使用 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 的工作簿中的真实表名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2011-04-06
      • 2011-02-27
      • 2012-11-16
      • 2017-06-13
      相关资源
      最近更新 更多