我有如下 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