У меня есть файл с уникальными ссылками в столбце A (например, имена компаний) и одно или несколько возвращенных значений, связанных с этим уникальным значением в столбце B (например ,accounts). Они разделены запятыми, у некоторых компаний есть только один аккаунт, у некоторых - много. Используя текст в столбцы, я получаю все номера счетов в отдельных столбцах в той же строке, что и название компании.

Вместо этого я хотел бы получить номер каждой учетной записи в новой строке, каждая с соответствующим названием компании, поэтому у меня будет лист шириной всего в 2 столбца, который можно будет искать на уровне отдельной учетной записи, одновременно ссылаясь на правильную компанию. Это возможно?

2 ответа2

0

Вы можете использовать формулы Excel для "ручного" разграничения ваших данных. Если вы используете эту формулу, она найдет первое вхождение запятой, а затем обрезает до этого вхождения:

=IF(A1="","",IFERROR(MID(A1,1,FIND(",",A1)-1),A1))

Под ячейкой, в которой у нас есть наши начальные данные (в нашем случае A1 - наши начальные данные), нам нужно проиндексировать данные, чтобы они не включали то, что мы только что удалили:

=MID(A1,LEN(B1)+2,LEN(A1))

Вот все это работает вместе:

0

@Jonnie, если бы вы использовали TextToColumns для распределения номеров счетов по различным столбцам. Затем перейдите в меню «Экран» и щелкните значок над макросом справа. Введите имя для макроса и нажмите «Создать». Затем вставьте приведенный ниже код между двумя строками с помощью sub. Закройте окно VBA, чтобы вернуться к вашим данным. Нажмите в любом месте данных. Снова щелкните значок макроса, выберите имя и нажмите «Выполнить».

Dim data As Range
Dim i As Integer
Dim j As Integer

Set data = ActiveCell.CurrentRegion 'Selecting the active region

For i = data.Rows.Count To 1 Step -1 'for all row (start at bottom)
    For j = 3 To data.Columns.Count 'for all columns (start at third column)
        If Not IsEmpty(data(i, j)) Then 'if there is a value
            data.Rows(i + 1).Insert 'insert a new row below
            data(i + 1, 1) = data(i, 1) 'copy the company
            data(i + 1, 2) = data(i, j) 'copy the account number
            data(i, j).Clear 'delete the original value
        End If
    Next j
Next i

Это должно привести к списку

company A; accno 1
company A; accno 2
company B; accno 3
company C; accno 4

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