我需要一些公式帮助,以便将数据从Excel中的一张工作表中提取到另一张工作表中的数据库中。
原始数据:
最终数据库:
从图像中可以看到,我要搜索的数据列表到处都是。
我想将其拉入最终数据库,但我的公式并未考虑到存在多行包含我要搜索的值的事实。并非所有列表都具有所有相关信息,因此它们之间的行也不是恒定的。
我尝试了VLOOKUP,MATCH,IF等,并且图像中的公式是使它起作用的最接近的公式。
我可以手动完成此操作,但是如果有一个简化我的生活的公式,我将非常感激。
答案 0 :(得分:1)
以下方法假设以下情况
在标题名称之前插入一列(将创建一个新列A)
在A2中插入以下公式
=IF(B2="Name",A1+1,A1)
Insert 0 in A1
拖动公式直到范围结束
现在创建一个包含所有标题的表格,并将公式插入该表格的第一个单元格中,该公式是一个数组公式,必须使用Ctrl + Shift + Enter输入
=INDEX($C$2:$C$18,MATCH(1,IF(($A$2:$A$18=$E2)*($B$2:$B$18=F$1),0)))
您必须根据数据更改单元格引用
NA表示该标头没有数据。
答案 1 :(得分:0)
带有一些代码的替代方法。
查看工作表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