2017-04-19 38 views
-1

我有一个关于excel的问题。按行列将excel行分组到一个单元格id

我有两列,A列有一个数字,B有国家代码。我正在寻找一种方法来自动通过100个成千上万的行来对它们进行分组,以使它们看起来像下面那样...

这是可行的吗?我在一个完全丧失:(

THE END结果

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

起点 - 列A &乙

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

是排序的顺序记录(A列)? –

+1

你有尝试过什么吗?如果有的话,你更有可能获得帮助。 – SJR

+0

我做了SJR使用查找到VB,但似乎无法得到它的工作。我应该在这里发布我的例子。 –

回答

0

这些解决方案使用一个名为级联工作列结果

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

数据由ID排序:

级联结果:D7输入这个公式。

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

ID.Unique:输入此Array FormulaE7FormulaArrays被输入按下CTRL + 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

0

这是一个VBA解决方案

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

ID.Unique:输入E7这个数组公式(FormulaArrays被输入按下CTRL + SHIFT + ENTER 同时,你将看到{}周围的公式如果输入正确

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

国家:在F7在VBA模块

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 

推荐阅读以下页面,以获得更深入的了解进入这User Defined Function(UDF)

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

拷贝UDF代码使用的资源:

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

0

试试这个,并让我知道在任何疑问的情况下,或者如果你需要详细的解释。

第一步:Filter通过柱A.
第二步中的数据:创建一个新的列C,其中使用此公式IF(A2=A1,CONCATENATE(B2,",",C1),B2)
第3步:使用此公式IF(A2=A3," ","REQUIRED_ANS")制作新的D列。
步骤4:使用​​D + F + F对列D进行过滤,您将获得所需的输出。

我的输出:
enter image description here

相关问题