Поворачивая CSV в строках столбцов

У меня есть файл с уникальными ссылками в столбце A (e.g.названия компаний) и одно или несколько возвращенных значений, связанных с этим уникальным значением в столбце B (e.g.счета). Это через запятую, некоторые компании имеют только один счет, у многих. Используя 'text to columns' , я получаю все номера счетов в отдельных столбцах в той же строке, что и название компании.

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

8
задан Ƭᴇcʜιᴇ007
11.11.2022 21:03 Количество просмотров материала 3419
Распечатать страницу

2 ответа

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

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

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

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

вот это все вместе:

enter image description here

0
отвечен Eric F 2022-11-13 04:51

@Джони, Если вы будете использовать TextToColumns, чтобы распространить accountnumbers по различным столбцам. Затем перейдите в меню "Экран" и нажмите значок над макросом справа. Введите имя макроса и нажмите кнопку "Создать". Затем вставьте код ниже между двумя строками с sub. Закройте окно VBA, чтобы вернуться к данным. Щелкните в любом месте данных. Щелкните значок макроса еще раз, выберите macroname и нажмите кнопку Выполнить.

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
0
отвечен Joost 2022-11-13 07:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх