Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 1
Регистрация: 27.01.2014
Сообщений: 172
1

Объединение нескольких строк в 1

27.11.2017, 14:59. Показов 1936. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть данные, которые могут располагаться в ячейках с А15:А70.
Данные расположены в 4 строки. Начинаются они всегда с заголовка "Реквизиты".
В следующей строке располагается текст "ИНН:", далее "КПП:", далее "Кор.сч.:"
Необходимо объединить данные строк "ИНН:", "КПП:", "Кор.сч.:" в одну строку через пробел, удалив все до знака ":".
И переместить результат в ячейку А5, а эти строки удалить.

Пример:
1. Вариант первоначальный:
Реквизиты
ИНН: 123456
КПП: 000000
Кор.сч.: 999999999

2. Что должно получиться:
123456 000000 999999999
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 14:59
Ответы с готовыми решениями:

Объединение нескольких файлов в один
Доброго дня! Сразу скажи что в экселе не очень силён. По работе требуется создавать множество...

Объединение нескольких документов в один
Приветствую. Нашел код который объединяет все документы в один файл. Каким образом сохранить...

Объединение нескольких таблиц в одну
Добрый день! Excel'ем приходится пользоваться нечасто, поэтому прошу не пинать :) Суть...

Объединение данных с нескольких листов по ключу
Добрый день. Имею 2 таблицы в книге excel, в которых столбцы с ключами не повторяются. И имеют вид...

4
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
27.11.2017, 16:04 2
Batosay, VBA тут не нужен, но если есть желание - запустите запись макроса и протяните формулу.
Цитата Сообщение от Batosay Посмотреть сообщение
Пример:
Пример нужно выложить в виде файла excel.
Цитата Сообщение от Batosay Посмотреть сообщение
Пример:
1. Вариант первоначальный:
Реквизиты
ИНН: 123456
КПП: 000000
Кор.сч.: 999999999
2. Что должно получиться:
123456 000000 999999999
Допустим ваши данные набиты в столбике А в строках 1 - 27 (27 строчек - исключительно мой каприз, поскольку своего варианта вы не приложили). Тогда в ячейку B4 вбейте формулу:
Код
=ЗАМЕНИТЬ(ИНДЕКС($A$1:$A$27;2+4*СЧЁТЗ($B$1:B7));1;5;"") & " " & ЗАМЕНИТЬ(ИНДЕКС($A$1:$A$27;3+4*СЧЁТЗ($B$1:B7));1;5;"") & " " & ЗАМЕНИТЬ(ИНДЕКС($A$1:$A$27;4+4*СЧЁТЗ($B$1:B7));1;9;"")
Протяните одну ячейку В4 ниже, пока формула не выдаст ошибку. В столбце В вы получите результат.
Код VBA на протягивание формулы можете получить через рекордер, вручную можно будет поменять диапазон.
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
27.11.2017, 16:04 3
В модуль:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Function Реквизиты()
    Dim rx As Range, rf As Range, r, c, i, t, u
    Set rf = Range("A15:A70")
    Set rx = rf.Find("Реквизиты")
    If Not rx Is Nothing Then
        r = rx.Row
        c = rx.Column
        For i = 1 To 3
            t = Trim(Split(Cells(r + i, c), ":")(1))
            Реквизиты = IIf(Len(Реквизиты) = 0, t, Реквизиты & " " & t)
        Next i
    End If
End Function
Вызывать как функцию
Миниатюры
Объединение нескольких строк в 1  
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
27.11.2017, 16:15 4
Лучший ответ Сообщение было отмечено Batosay как решение

Решение

функция не удаляет. Для удаления процедура:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Реквизиты()
Dim Реквизит
    Dim rx As Range, rf As Range, r, c, i, t, u
    Set rf = Range("A15:A70")
    Set rx = rf.Find("Реквизиты")
    If Not rx Is Nothing Then
        r = rx.Row
        c = rx.Column
        For i = 1 To 3
            t = Trim(Split(Cells(r + i, c), ":")(1))
            Реквизит = IIf(Len(Реквизит) = 0, t, Реквизит & " " & t)
        Next i
    End If
    [a5] = Реквизит
    rx.Resize(4).ClearContents
End Sub
1
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
27.11.2017, 16:38 5
Batosay, если реквизиты встречаются у вас один раз, и вставить результат нужно только один раз, то формула для A5 будет
Код
=ЗАМЕНИТЬ(ИНДЕКС($A$15:$A$70;ПОИСКПОЗ("Реквизиты";$A$15:$A$70;0)+1);1;5;"") & " " &ЗАМЕНИТЬ(ИНДЕКС($A$15:$A$70;ПОИСКПОЗ("Реквизиты";$A$15:$A$70;0)+2);1;5;"") & " " & ЗАМЕНИТЬ(ИНДЕКС($A$15:$A$70;ПОИСКПОЗ("Реквизиты";$A$15:$A$70;0)+3);1;9;"")
соответственно вариант кода будет:
Visual Basic
1
2
3
4
5
6
7
Sub Rekv_fin()
    
    ActiveSheet.Cells(5, 1).FormulaR1C1 = "=REPLACE(INDEX(R15C1:R70C1,MATCH(""Реквизиты"",R15C1:R70C1,0)+1),1,5,"""") & "" "" &REPLACE(INDEX(R15C1:R70C1,MATCH(""Реквизиты"",R15C1:R70C1,0)+2),1,5,"""") & "" "" & REPLACE(INDEX(R15C1:R70C1,MATCH(""Реквизиты"",R15C1:R70C1,0)+3),1,9,"""")"
    ActiveSheet.Cells(5, 1).Value = ActiveSheet.Cells(5, 1).Text
    ActiveSheet.Range("A15:A70").Find("Реквизиты").Resize(4, 1).ClearContents
    
End Sub
1
27.11.2017, 16:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2017, 16:38
Помогаю со студенческими работами здесь

Объединение текста из нескольких ячеек (с поиском повторов)
Всем привет возникла следующая задача: необходимо составить отчет по таблице (пример во...

Сравнение строк в нескольких файлах excel, копирование несовпадающих строк и их вывод в сводный файл
Добрый день, только только начал разбираться с VBA в excel, поэтому прошу помощи (схожие темы...

Объединение нескольких файлов в одну таблицу (макрос не работает)
Нашел макрос Sub LoadDataFromWorkbooks() On Error Resume Next: Err.Clear Dim...

Объединение содержимого ячеек в одну при нескольких условиях
Доброго времени суток, Уважаемые. Подскажите, пожалуйста, как с помощью формулы решить задачу по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru