У меня есть электронная таблица со столбцом, содержащим список из одного или нескольких имен баз данных. К сожалению, время выполнения для изменения этого отчета долгое. Поэтому мне нужно манипулировать данными.
Столбец содержит все базы данных, относящиеся к записи в одной ячейке, разделенные запятыми. Мне нужно разобрать этот список и поместить каждую базу данных в отдельную ячейку. Важное примечание: янетразрешено использовать макросы/код VBA в этом решении.
Первый простой: найдите первую запятую, верните все, что слева от нее. А вот со следующими у меня проблемы.
Я создал столбец, в котором подсчитывается количество запятых в ячейке, чтобы я мог определить, указано ли несколько баз данных.
Как мне справиться со следующими?
решение1
Это не ответ функции рабочего листа, но он и не использует VBA.
Вы пробовали использовать функцию "Текст по столбцам"? В Excel 2010 это одна из кнопок на ленте "Данные".
- Выберите колонку.
- Нажмите кнопку «Текст по столбцам».
- На первой странице мастера выберите «С разделителями», затем «Далее».
- На второй странице отметьте «Запятая», чтобы выбрать ее в качестве разделителя. Вы можете отметить/снять отметки с некоторых других пунктов в зависимости от формата ваших данных.
- На этом этапе вы, вероятно, уже можете нажать кнопку «Готово», чтобы разбить данные на столбцы, но, возможно, вам захочется перейти на следующую страницу, чтобы изменить форматы столбцов.
решение2
С образцами данных вА1, вВ1входить:
=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
и скопируйте:
ПРАВКА №1:
Если мы начнем с материала в столбцахАиБтак:
и запустите этот короткий макрос:
Sub dural()
Dim N As Long, i As Long, K As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
K = 1
For i = 2 To N
v = Cells(i, "A").Value
ary = Split(Cells(i, "B").Value, ",")
For Each a In ary
Cells(K, "C").Value = v
Cells(K, "D").Value = a
K = K + 1
Next a
Next i
End Sub
мы получим в итоге следующее: