在列中查找字符串并获取MS Excel 2010中另一列中的所有相应值

时间:2015-07-08 03:33:18

标签: excel

问题 -

Column 1  Column 2
------------------
A          AB
B          PR
C          EF
A          GH
A          JK
C          XY
A          UV
D          YZ

需要解决方案

Query  Column 2 column 3 column 4 Column 5
  A         AB       GH       JK    UV
  B         PR
  C         EF       XY
  D         YZ

我需要Excel公式,没有VBA或编程。

Tried Index&匹配公式,它给出了相邻列中一个单元格的值,但我需要获得表中提到的所有引用。

需要在另一张表中作为摘要。

[这是物料清单(BOM)表]

表中共有48000行和15列,而15000行是唯一的。我们也只需要15列中的2列用于汇总目的。一些单元格被引用20次或更多次因此需要填充所有这些值不同的栏目。

我尝试获取此数据的工作表使用MS Query链接到另一个源文件。

PS:抱歉原始查询中没有提供任何信息。

2 个答案:

答案 0 :(得分:0)

此代码将创建一个名为RowsToColumns的新工作表,其中包含夏令时数据。

Sub PostRowsToColumns()
Dim X As Long, Y As Long, MyArr As Variant
ActiveSheet.Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "RowsToColumns"
Range("A2:B" & Range("A" & Rows.Count).End(xlUp).Row).Sort Range("A1")
Y = 2
For X = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & X).text <> Range("A" & X).Offset(-1, 0).text Then
        MyArr = Application.Transpose(Range("B" & X).Resize(WorksheetFunction.CountIf(Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row), Range("A" & X)), 1))
        Range("D" & Y) = Range("A" & X).text
        If Range("B" & X).Resize(WorksheetFunction.CountIf(Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row), Range("A" & X)), 1).Rows.Count > 1 Then
            Range("E" & Y).Resize(1, UBound(MyArr)) = MyArr
        Else
            Range("E" & Y) = MyArr
        End If
        Y = Y + 1
    End If
Next
Columns("A:C").Delete Shift:=xlToLeft
End Sub

答案 1 :(得分:0)

假设您的第1列为A2:A9,第2列为B2:B9,则使用&#34;唯一列表&#34;从A11开始的第1列值,您可以在B11中使用此公式,使用 CTRL + SHIFT + ENTER确认并向下复制

=IFERROR(INDEX($B$2:$B$9,SMALL(IF($A$2:$A$9=$A11,ROW($A$2:$A$9)-ROW($A$2)+1),COLUMNS($B11:B11))),"")

您可以扩展更大的范围(或其他工作表中的数据),但如果您有大量此类公式,则可能会大大降低您的工作簿速度

请参阅此处的示例文件:

https://www.dropbox.com/s/f1hqut8s6u0n7ln/Code%20List.xlsx?dl=0