Excel formula Excel公式从B列中提取数据,如果A列与C列匹配,则多行将匹配

Excel formula Excel公式从B列中提取数据,如果A列与C列匹配,则多行将匹配,excel-formula,Excel Formula,我需要一些公式的帮助,将数据从Excel中的一张工作表拉到另一张工作表中的数据库 原始数据: 最终数据库: 从图片中可以看到,我正在搜索的数据列表到处都是 我想把它拉到最后一个数据库,但我的公式没有考虑到有多行包含我正在搜索的值这一事实。并非所有列表都包含所有相关信息,因此它们之间的行不是恒定的 我尝试过VLOOKUP、MATCH、IF等,图像中的公式是我最接近于使其工作的公式 我可以手动完成,但如果有一个公式可以让我的生活更轻松,我会非常感激 下面的方法假设如下 所有组至少包含一个名称

我需要一些公式的帮助,将数据从Excel中的一张工作表拉到另一张工作表中的数据库

原始数据:

最终数据库:

从图片中可以看到,我正在搜索的数据列表到处都是

我想把它拉到最后一个数据库,但我的公式没有考虑到有多行包含我正在搜索的值这一事实。并非所有列表都包含所有相关信息,因此它们之间的行不是恒定的

我尝试过VLOOKUP、MATCH、IF等,图像中的公式是我最接近于使其工作的公式


我可以手动完成,但如果有一个公式可以让我的生活更轻松,我会非常感激

下面的方法假设如下

  • 所有组至少包含一个名称
  • 没有没有没有标题名称的单元格(任何没有标题的单元格 将被忽略)
在标题名称前插入一列(将创建一个新列a)

在A2中插入以下公式

=IF(B2="Name",A1+1,A1)
Insert 0 in A1 
拖动公式直到范围结束

现在,创建一个包含所有标题的表,并在该表的第一个单元格中插入公式,该公式是一个数组公式,必须使用Ctrl+Shift+Enter输入

您必须根据数据更改单元格引用


NA表示该标题没有数据。

使用一些代码的替代方法

查看第2页A列中的值,然后将其复制粘贴到第1页

Sub transposeData()

Dim Sht1 As Worksheet
Set Sht1 = ActiveWorkbook.Worksheets("Sheet1") 'Name of worksheet 1
Dim Sht2 As Worksheet
Set Sht2 = ActiveWorkbook.Worksheets("Sheet2") 'Name of worksheet 2

Dim lrow1 As Long
Dim lrow2 As Long
Dim i As Long

lrow2 = Sht2.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row for sheet 2, Column A

For i = 1 To lrow2 'Loop from 1st row to last row in sheet 1
lrow1 = Sht1.Cells(Rows.Count, 1).End(xlUp).Row + 1 'Find last row in sheet 1
    Select Case Sht2.Cells(i, 1).Value 'Check the current value in Sheet 2, Column A
        Case Is = "Name" 'If the value is "Name" then copy to sheet 1, Column A
            Sht1.Cells(lrow1, 1).Value = Sht2.Cells(i, 2).Value
        Case Is = "Number" 'If the value is "Number" then copy to sheet 1, Column C
            Sht1.Cells(lrow1, 2).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Address" 'If the value is "Address" then copy to sheet 1, Column D
            Sht1.Cells(lrow1, 3).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Email" 'If the value is "Email" then copy to sheet 1, Column B
            Sht1.Cells(lrow1, 4).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Website" 'If the value is "Website" then copy to sheet 1, Column E
            Sht1.Cells(lrow1, 5).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
    End Select
Next i
End Sub

您是想一次提取一个任意企业名称的详细信息,还是想将整个Sheet2数据库转换为Sheet1格式?后者。我需要第二页中的所有信息才能完成第一页。非常感谢!该公式使用Ctrl-Shift-Enter键。
Sub transposeData()

Dim Sht1 As Worksheet
Set Sht1 = ActiveWorkbook.Worksheets("Sheet1") 'Name of worksheet 1
Dim Sht2 As Worksheet
Set Sht2 = ActiveWorkbook.Worksheets("Sheet2") 'Name of worksheet 2

Dim lrow1 As Long
Dim lrow2 As Long
Dim i As Long

lrow2 = Sht2.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row for sheet 2, Column A

For i = 1 To lrow2 'Loop from 1st row to last row in sheet 1
lrow1 = Sht1.Cells(Rows.Count, 1).End(xlUp).Row + 1 'Find last row in sheet 1
    Select Case Sht2.Cells(i, 1).Value 'Check the current value in Sheet 2, Column A
        Case Is = "Name" 'If the value is "Name" then copy to sheet 1, Column A
            Sht1.Cells(lrow1, 1).Value = Sht2.Cells(i, 2).Value
        Case Is = "Number" 'If the value is "Number" then copy to sheet 1, Column C
            Sht1.Cells(lrow1, 2).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Address" 'If the value is "Address" then copy to sheet 1, Column D
            Sht1.Cells(lrow1, 3).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Email" 'If the value is "Email" then copy to sheet 1, Column B
            Sht1.Cells(lrow1, 4).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
        Case Is = "Website" 'If the value is "Website" then copy to sheet 1, Column E
            Sht1.Cells(lrow1, 5).Offset(-1, 0).Value = Sht2.Cells(i, 2).Value
    End Select
Next i
End Sub