按列ID将excel行分组到单个单元格

时间:2017-04-19 15:46:26

标签: excel excel-vba excel-formula vba

我对excel有疑问。

我有两列,A列有一个数字,B有国家代码。我正在寻找一种方法来自动浏览100多个行来对它们进行分组,使它们看起来如下......

这可行吗?我完全失败了:(

结果

6512    AG,AI,AW,BB,BL,BM,
6513    BQ,BS,BZ,CA,CR

起点 - A栏和A栏。乙

6512    AG
6512    AI
6512    AW
6512    BB
6512    BL
6512    BM
6513    BQ
6513    BS
6513    BZ
6513    CA
6513    CR

3 个答案:

答案 0 :(得分:0)

这些解决方案使用名为连锁结果的工作栏。

假设您的数据有一个标题(根据需要调整公式),位于B6:C34 (根据需要更改),如下图所示。

ID 排序的数据:

连续结果:D7中输入此公式。

= CONCATENATE( C7, IF( EXACT( B7, B8 ), "," & D8, "" ) )

ID.Unique:Array Formula中输入此E7(按 CTRL + FormulaArrays > SHIFT + ENTER 同时,您将看到 { } 公式如果输入正确

=IFERROR( INDEX( $B$7:$B$34,
MATCH( 0, COUNTIF( $E6:$E$6, $B$7:$B$34 ), 0 ) * 1 ), "" )

国家/地区:F7

中输入此公式
=IFERROR(VLOOKUP(E7,$B$6:$J$34,3,0),"")

将范围D7:F7复制到最后一行数据(即第34行)

数据未排序:如果数据未排序,请在D7中输入连续结果的此公式。 所有其他公式保持不变

=CONCATENATE( C7,
IF( ISERROR( MATCH( B7, B8:B$35, 0 ) ), "",
"," & VLOOKUP( B7, B8:D$35, 3, 0 ) ) )

enter image description here

建议阅读以下页面以深入了解所使用的资源:

Excel functions (alphabetical)Create an array formulaGuidelines and examples of array formulas

答案 1 :(得分:0)

这是一个VBA解决方案

假设您的数据(不包括标题)位于B7:C34(根据需要更改)。

ID.Unique:在E7中输入此数组公式(按 CTRL + SHIFT +输入 FormulaArrays 同时输入 ,如果输入正确,您将在公式周围看到 { }

=IFERROR( INDEX( $B$7:$B$34,
MATCH( 0, COUNTIF( $E6:$E$6, $B$7:$B$34 ), 0 ) * 1 ), "" )

国家/地区:在F7中输入此User Defined Function (UDF)

=Match_Concatenated(E7,$B$7:$C$34)

在VBA模块中复制此UDF代码

Option Explicit

Public Function Match_Concatenated(vValue As Variant, rTrg As Range) As String
Dim sOutput As String
Dim vTrg As Variant, vItm As Variant, lRow As Long
    vTrg = rTrg.Value2
    For lRow = 1 To UBound(vTrg)
        vItm = WorksheetFunction.Index(vTrg, lRow, 0)
        If vItm(1) = vValue Then sOutput = sOutput & Chr(44) & vItm(2)
    Next
    sOutput = Replace(sOutput, Chr(44), vbNullString, 1, 1)
    Match_Concatenated = sOutput
End Function

建议阅读以下页面以深入了解所使用的资源:

Excel functions (alphabetical)

Create an array formula

Guidelines and examples of array formulas

Option Explicit Statement

Range.Value2 Property (Excel)For...Next Statement

WorksheetFunction Object (Excel)INDEX function

If...Then...Else StatementReplace Function

答案 2 :(得分:0)

尝试此操作,如有任何疑问或需要详细说明,请与我们联系。

第1步: Filter按A列的数据。
第2步:使用此公式IF(A2=A1,CONCATENATE(B2,",",C1),B2)制作新的C列 第3步:使用此公式IF(A2=A3," ","REQUIRED_ANS")创建一个新列D. 第4步:使用ALT + D + F + F对D列进行过滤,您可以获得所需的输出。

我的输出:
enter image description here