-1

У меня есть данные Excel, которые выглядят следующим образом:

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

так далее... Я хотел бы иметь список значений в столбце A, разделенных пробелом, если они все имеют одинаковое значение в столбце B. Например, если значение в столбце B равно A, то я бы получил "1 2 «если бы он был равен B, то я бы получил" 3 4 2 1 7 "и т. д. Я не совсем знаю, что делать, потому что у меня есть различные значения значений в столбце B ...

3 ответа3

2

Что-то вроде этого:

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 из этого вопроса.

0

Я бы вставил две строки вверху с 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.

Не могу устоять: если бы я имел это в CSV на Unix, я бы написал

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

С данными в столбцах A и B попробуйте этот небольшой макрос:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .