我对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
答案 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 ) ) )
建议阅读以下页面以深入了解所使用的资源:
Excel functions (alphabetical),Create an array formula,Guidelines 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),
Guidelines and examples of array formulas,
Range.Value2 Property (Excel),For...Next Statement,
答案 2 :(得分:0)