ChicoId
@ChicoId
IT Specialist

Как объединить данные с 2-х колонок, разделенные символом '#'?

Данные в 1-й колонке содержат информацию о типе данных, разделенные символом '#' .
Year#Storey#Area#Condition#Name

Данные во 2-й колонке содержат саму информацию, соответствующую к типам данных с первой колонки , также разделенную символом '#' :
2015#3#170#Renovated#John

Я хочу скомбинировать данные с обоих колонок в следующем формате:
Year - 2015
Storey - 3
Area - 170
Condition - Renovated
Name - John


Для наглядности представляю картинку:
a2d43366f4e243f99f54fcb65db4cb59.jpg
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
honor8
@honor8
Принципы быстродействия VBA в описании
  1. Поскольку не известно, сколько строк в таблице, как вариант можно использовать именованные диапазоны, которые можно создать через комбинацию клавиш Ctrl+F3 (Имя Диапазон):
    • КОЛОН1 =ДВССЫЛ("$A$"&СТРОКА()&":$A$"&СТРОКА())
    • КОЛ1.СТР2 =НАЙТИ("#";КОЛОН1)+1
    • КОЛ1.СТР3 =НАЙТИ("#";КОЛОН1;КОЛ1.СТР2)+1
    • КОЛ1.СТР4 =НАЙТИ("#";КОЛОН1;КОЛ1.СТР3)+1
    • КОЛОН2 =ДВССЫЛ("$B$"&СТРОКА()&":$B$"&СТРОКА())
    • КОЛ2.СТР2 =НАЙТИ("#";КОЛОН2)+1
    • КОЛ2.СТР3 =НАЙТИ("#";КОЛОН2;КОЛ2.СТР2)+1
    • КОЛ2.СТР4 =НАЙТИ("#";КОЛОН2;КОЛ2.СТР3)+1

  2. Тогда формула для разделения подстрок: =СЦЕПИТЬ(ЛЕВСИМВ(КОЛОН1;НАЙТИ("#";КОЛОН1)-1);" - ";ЛЕВСИМВ(КОЛОН2;НАЙТИ("#";КОЛОН2)-1);СИМВОЛ(10);ПСТР(КОЛОН1;КОЛ1.СТР2;НАЙТИ("#";КОЛОН1;КОЛ1.СТР2)-КОЛ1.СТР2);" - ";ПСТР(КОЛОН2;КОЛ2.СТР2;НАЙТИ("#";КОЛОН2;КОЛ2.СТР2)-КОЛ2.СТР2);СИМВОЛ(10);ПСТР(КОЛОН1;КОЛ1.СТР3;НАЙТИ("#";КОЛОН1;КОЛ1.СТР3)-КОЛ1.СТР3);" - ";ПСТР(КОЛОН2;КОЛ2.СТР3;НАЙТИ("#";КОЛОН2;КОЛ2.СТР3)-КОЛ2.СТР3);СИМВОЛ(10);ПСТР(КОЛОН1;КОЛ1.СТР4;НАЙТИ("#";КОЛОН1;КОЛ1.СТР4)-КОЛ1.СТР4);" - ";ПСТР(КОЛОН2;КОЛ2.СТР4;НАЙТИ("#";КОЛОН2;КОЛ2.СТР4)-КОЛ2.СТР4);СИМВОЛ(10);ПРАВСИМВ(КОЛОН1;ДЛСТР(КОЛОН1)-НАЙТИ("#";КОЛОН1;КОЛ1.СТР4));" - ";ПРАВСИМВ(КОЛОН2;ДЛСТР(КОЛОН2)-НАЙТИ("#";КОЛОН2;КОЛ2.СТР4)))
  3. В формате ячеек необходимо установить свойство "переносить по словам"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Так как в экселе нет текстовой функции позволяющей разбить строку - то подобное можно провернуть только функцией FIND() - находя по очереди каждый знак # и вырезая нужную часть строки функцией MID(). Чтобы сократить объем функции придется использовать дополнительные ячейки для хранения позиции символов #
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы