以空格分隔的文本列表列

以空格分隔的文本列表列

我有如下 Excel 数据:

1 A
2 A
3 B
4 B
2 B
1 B
7 B

等等...如果 B 列中的值都相同,我希望有一个 A 列中的值列表,并用空格分隔。例如,如果 B 列中的值等于 A,那么我会得到“1 2”,如果它等于 B,那么我会得到“3 4 2 1 7”等等...我不知道该怎么做,因为 B 列中的值数量各不相同...

答案1

像这样:

A   B   C       --Columns
1   A   1       - Formula in column C =IF(B1<>B2;A2;C1&" "&A2)
2   A   1 2 
3   B   3   
4   B   3 4 
5   B   3 4 5   

或者使用 ConcatenateRange问题。

答案2

我将在顶部插入两行,其中 C1="A"、C2="B" 等,代表 B 列的所有值。

\ | A B C D E
--+---------- 
1 |     A B Y
2 |
3 | 1 A  =C2&IF(C$1=$B3;" "&$A3;"")
4 | 2 A
5 | 3 B
6 | 4 B
7 | 2 B
8 | 1 B
9 | 7 B

然后将 C3 中的公式扩展到 C3 右侧和下方的所有单元格。

无法抗拒:如果我在 Unix 上有 CSV 格式的话我会写

for i in `sed 's/^.*,//' < file` ; do echo $i : `sed -n "s/,$i,*.*//p" < file` ; done

答案3

使用列中的数据A,尝试这个小宏:

Sub Routine()
    Dim Na As Long, Nc As Long, i As Long, j As Long
    Dim v As String, vc As String

    Columns("B:B").Copy Range("C1")
    ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo

    Na = Cells(Rows.Count, "A").End(xlUp).Row
    Nc = Cells(Rows.Count, "C").End(xlUp).Row
    For i = 1 To Nc
        v = ""
        vc = Cells(i, "C").Value
        For j = 1 To Na
            If Cells(j, "B").Value = vc Then
                If v = "" Then
                    v = CStr(Cells(j, "A").Value)
                Else
                    v = v & " " & CStr(Cells(j, "A").Value)
                End If
            End If
        Next j
        Cells(i, "D").Value = v
    Next i
End Sub

在此处输入图片描述

相关内容