Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/"Сцепление" текстов (значений ячеек) таблицы. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
"Сцепление" текстов (значений ячеек) таблицы.
Юрий_Нд Дата: Вторник, 05.09.2017, 10:19 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Каким образом можно "сцепить" записи по колонке номер 9 (см образец в прикрепленном файле).
Обращаю особое внимание, что количество строк может быть произвольным, в конце суммирующей записи нет никаких знаков препинания, пробелов между записями нет.
К сообщению приложен файл: 1806130.xlsx (10.3 Kb)


Сообщение отредактировал Юрий_Нд - Вторник, 05.09.2017, 11:07
 
Ответить
СообщениеКаким образом можно "сцепить" записи по колонке номер 9 (см образец в прикрепленном файле).
Обращаю особое внимание, что количество строк может быть произвольным, в конце суммирующей записи нет никаких знаков препинания, пробелов между записями нет.

Автор - Юрий_Нд
Дата добавления - 05.09.2017 в 10:19
vikttur Дата: Вторник, 05.09.2017, 10:31 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Но теперь-то вопрос не про комбинации! Название темы не отражает сути. Да и не сумма это, а сцепление текстов (значений ячеек)
Связывать эту тему с прошлой не нужно - вопросы РАЗНЫЕ


Сообщение отредактировал vikttur - Вторник, 05.09.2017, 10:34
 
Ответить
СообщениеНо теперь-то вопрос не про комбинации! Название темы не отражает сути. Да и не сумма это, а сцепление текстов (значений ячеек)
Связывать эту тему с прошлой не нужно - вопросы РАЗНЫЕ

Автор - vikttur
Дата добавления - 05.09.2017 в 10:31
_Boroda_ Дата: Вторник, 05.09.2017, 12:07 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16880
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Функция пользователя
[vba]
Код
Function Sbor(d_ As Range, Optional del_ = ";")
    Application.Volatile
    If d_.Columns.Count <> 1 Then
        a_ = "Ссылка д.б. на ОДИН столбец"
    Else
        r0_ = d_(1).Row
        c_ = d_(1).Column
        r1_ = Cells(Rows.Count, c_).End(3).Row
        If r1_ < r0_ Then
            a_ = "Ниже ссылки данных нет"
        Else
            For i = r0_ To r1_
                a_ = a_ & del_ & Cells(i, c_)
            Next i
            a_ = Mid(a_, Len(del_) + 1, Len(a_))
        End If
    End If
    Sbor = a_
End Function
[/vba]
К сообщению приложен файл: 1806130_1.xlsm (16.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеФункция пользователя
[vba]
Код
Function Sbor(d_ As Range, Optional del_ = ";")
    Application.Volatile
    If d_.Columns.Count <> 1 Then
        a_ = "Ссылка д.б. на ОДИН столбец"
    Else
        r0_ = d_(1).Row
        c_ = d_(1).Column
        r1_ = Cells(Rows.Count, c_).End(3).Row
        If r1_ < r0_ Then
            a_ = "Ниже ссылки данных нет"
        Else
            For i = r0_ To r1_
                a_ = a_ & del_ & Cells(i, c_)
            Next i
            a_ = Mid(a_, Len(del_) + 1, Len(a_))
        End If
    End If
    Sbor = a_
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 05.09.2017 в 12:07
sboy Дата: Вторник, 05.09.2017, 12:33 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Еще вариант
[vba]
Код
Sub Join_()
arr = Range("L4:L" & Cells(4, 9).End(xlDown).Row).Value
[M4] = Join(Application.Transpose(arr), ";")
End Sub
[/vba]
К сообщению приложен файл: 1806130-1-.xlsm (15.3 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Еще вариант
[vba]
Код
Sub Join_()
arr = Range("L4:L" & Cells(4, 9).End(xlDown).Row).Value
[M4] = Join(Application.Transpose(arr), ";")
End Sub
[/vba]

Автор - sboy
Дата добавления - 05.09.2017 в 12:33
Юрий_Нд Дата: Вторник, 05.09.2017, 13:05 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, sboy, Я Вам очень благодарен за конкретную помощь.
Простите, есть еще одна проблемка.
В случае если какая-либо строчка пуста, выводится двойной знак препинания ";;".
Как обойти такую проблемку?
И ещё. Если я Вас ещё не до конца замучил своей тупостью,
прошу добавить чуть больше комментариев в тело функции.
 
Ответить
Сообщение_Boroda_, sboy, Я Вам очень благодарен за конкретную помощь.
Простите, есть еще одна проблемка.
В случае если какая-либо строчка пуста, выводится двойной знак препинания ";;".
Как обойти такую проблемку?
И ещё. Если я Вас ещё не до конца замучил своей тупостью,
прошу добавить чуть больше комментариев в тело функции.

Автор - Юрий_Нд
Дата добавления - 05.09.2017 в 13:05
sboy Дата: Вторник, 05.09.2017, 13:10 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
пробелов между записями нет.

Цитата Юрий_Нд, 05.09.2017 в 13:05, в сообщении № 5 ()
В случае если какая-либо строчка пуста

огласите весь список, пожалуйста (с)


Яндекс: 410016850021169
 
Ответить
Сообщение
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
пробелов между записями нет.

Цитата Юрий_Нд, 05.09.2017 в 13:05, в сообщении № 5 ()
В случае если какая-либо строчка пуста

огласите весь список, пожалуйста (с)

Автор - sboy
Дата добавления - 05.09.2017 в 13:10
_Boroda_ Дата: Вторник, 05.09.2017, 13:13 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16880
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Ловите
[vba]
Код
Function Sbor(d_ As Range, Optional del_ = ";")
    Application.Volatile 'Автопересчет функции. Если их много, то убрать эту строку
    If d_.Columns.Count <> 1 Then 'если в ссылке d_ несколько столбцов
        a_ = "Ссылка д.б. на ОДИН столбец"
    Else 'иначе
        r0_ = d_(1).Row 'номер первой строки из ссылки
        c_ = d_(1).Column 'номер первого столбца из ссылки
        r1_ = Cells(Rows.Count, c_).End(3).Row 'номер последней заполненной строки с столбце с_
        If r1_ < r0_ Then 'если r1<к0
            a_ = "Ниже ссылки данных нет"
        Else 'иначе
            For i = r0_ To r1_ 'цикл от r0 до r1
                If Cells(i, c_) <> "" Then 'если ячейка не пуста
                    a_ = a_ & del_ & Cells(i, c_) 'приклеиваем к переменной а справа разделитель и значение ячейки
                End If '
            Next i
            a_ = Mid(a_, Len(del_) + 1, Len(a_)) ' отрезаем от полученного а слева столько символов, сколько их в разделителе
        End If
    End If
    Sbor = a_ 'функция выводит то, что получилось в а
End Function
[/vba]
К сообщению приложен файл: 1806130_2.xlsm (17.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЛовите
[vba]
Код
Function Sbor(d_ As Range, Optional del_ = ";")
    Application.Volatile 'Автопересчет функции. Если их много, то убрать эту строку
    If d_.Columns.Count <> 1 Then 'если в ссылке d_ несколько столбцов
        a_ = "Ссылка д.б. на ОДИН столбец"
    Else 'иначе
        r0_ = d_(1).Row 'номер первой строки из ссылки
        c_ = d_(1).Column 'номер первого столбца из ссылки
        r1_ = Cells(Rows.Count, c_).End(3).Row 'номер последней заполненной строки с столбце с_
        If r1_ < r0_ Then 'если r1<к0
            a_ = "Ниже ссылки данных нет"
        Else 'иначе
            For i = r0_ To r1_ 'цикл от r0 до r1
                If Cells(i, c_) <> "" Then 'если ячейка не пуста
                    a_ = a_ & del_ & Cells(i, c_) 'приклеиваем к переменной а справа разделитель и значение ячейки
                End If '
            Next i
            a_ = Mid(a_, Len(del_) + 1, Len(a_)) ' отрезаем от полученного а слева столько символов, сколько их в разделителе
        End If
    End If
    Sbor = a_ 'функция выводит то, что получилось в а
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 05.09.2017 в 13:13
vikttur Дата: Вторник, 05.09.2017, 13:20 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Если нужно объединить только уникальные записи
[vba]
Код
Function MergeTxt(r As Range, Optional sep As String = ";") As String
Dim txt
    With CreateObject("Scripting.Dictionary") ' создаем словарь
        ' в цикле заполняем словарь уникальными значениями диапазона
        For Each txt In r: .Item(txt.Value) = 0&: Next txt
        MergeTxt = Replace(Join(.keys, sep), ";;", ";") ' объединяем элементы словаря
    End With
End Function
[/vba]
В ячейку
=MergeTxt(Ваш_диапазон)
 
Ответить
СообщениеЕсли нужно объединить только уникальные записи
[vba]
Код
Function MergeTxt(r As Range, Optional sep As String = ";") As String
Dim txt
    With CreateObject("Scripting.Dictionary") ' создаем словарь
        ' в цикле заполняем словарь уникальными значениями диапазона
        For Each txt In r: .Item(txt.Value) = 0&: Next txt
        MergeTxt = Replace(Join(.keys, sep), ";;", ";") ' объединяем элементы словаря
    End With
End Function
[/vba]
В ячейку
=MergeTxt(Ваш_диапазон)

Автор - vikttur
Дата добавления - 05.09.2017 в 13:20
Юрий_Нд Дата: Вторник, 05.09.2017, 13:39 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, vikttur, Ещё раз большое спасибо за участие.
sboy, Я с вами согласен. Написано коряво.
В оправдание могу сказать только то, что в моей просьбе:
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
пробелов между записями нет

я имел в виду окончательный результат, который выводится в десятую колонку.
Извиняюсь.
 
Ответить
Сообщение_Boroda_, vikttur, Ещё раз большое спасибо за участие.
sboy, Я с вами согласен. Написано коряво.
В оправдание могу сказать только то, что в моей просьбе:
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
пробелов между записями нет

я имел в виду окончательный результат, который выводится в десятую колонку.
Извиняюсь.

Автор - Юрий_Нд
Дата добавления - 05.09.2017 в 13:39
sboy Дата: Вторник, 05.09.2017, 13:49 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Цитата Юрий_Нд, 05.09.2017 в 13:39, в сообщении № 9 ()
я имел в виду окончательный результат

ясно, я не правильно понял (думал, что это условие).
Вот так для значений с пропусками
[vba]
Код
Sub Join_()
arr = Range("L4:L" & Cells(4, 9).End(xlDown).Row).Value
txt = Replace(Join(Application.Transpose(arr), ";"), ";;", ";")
[M4] = Replace(txt, ";;", ";")
End Sub
[/vba]
К сообщению приложен файл: 8011335.xlsm (15.2 Kb)


Яндекс: 410016850021169
 
Ответить
Сообщение
Цитата Юрий_Нд, 05.09.2017 в 13:39, в сообщении № 9 ()
я имел в виду окончательный результат

ясно, я не правильно понял (думал, что это условие).
Вот так для значений с пропусками
[vba]
Код
Sub Join_()
arr = Range("L4:L" & Cells(4, 9).End(xlDown).Row).Value
txt = Replace(Join(Application.Transpose(arr), ";"), ";;", ";")
[M4] = Replace(txt, ";;", ";")
End Sub
[/vba]

Автор - sboy
Дата добавления - 05.09.2017 в 13:49
Юрий_Нд Дата: Среда, 06.09.2017, 16:30 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Прошу прощения Уважаемые Знатоки Excel.
Скажите, то что в первой колонке Excel абсолютно одинаковые значения,
может нам как-то "помочь уйти" от программирования в ВБА
и решить задачу "сцепления" стандартными функциями Excel?


Сообщение отредактировал Юрий_Нд - Среда, 06.09.2017, 16:32
 
Ответить
СообщениеПрошу прощения Уважаемые Знатоки Excel.
Скажите, то что в первой колонке Excel абсолютно одинаковые значения,
может нам как-то "помочь уйти" от программирования в ВБА
и решить задачу "сцепления" стандартными функциями Excel?

Автор - Юрий_Нд
Дата добавления - 06.09.2017 в 16:30
sboy Дата: Среда, 06.09.2017, 16:41 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Юрий_Нд, Сцепить одинаковые значения n раз?


Яндекс: 410016850021169
 
Ответить
СообщениеЮрий_Нд, Сцепить одинаковые значения n раз?

Автор - sboy
Дата добавления - 06.09.2017 в 16:41
Юрий_Нд Дата: Среда, 06.09.2017, 17:00 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
sboy, Задача остается той же. "Сцепить" нужно 9-ю колонку, а одинаковые значения в первой.
 
Ответить
Сообщениеsboy, Задача остается той же. "Сцепить" нужно 9-ю колонку, а одинаковые значения в первой.

Автор - Юрий_Нд
Дата добавления - 06.09.2017 в 17:00
_Boroda_ Дата: Среда, 06.09.2017, 17:07 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16880
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Ага, только с учетом того, что
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
количество строк может быть произвольным

Цитата Юрий_Нд, 05.09.2017 в 13:05, в сообщении № 5 ()
В случае если какая-либо строчка пуста, выводится двойной знак препинания ";;".
Как обойти такую проблемку?

И вообще непонятно причем здесь
одинаковые значения в первой

Юрий_Нд, с дополнительным столбцом можно. без - только прямыми ссылками типа функции СЦЕПИТЬ


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеАга, только с учетом того, что
Цитата Юрий_Нд, 05.09.2017 в 10:19, в сообщении № 1 ()
количество строк может быть произвольным

Цитата Юрий_Нд, 05.09.2017 в 13:05, в сообщении № 5 ()
В случае если какая-либо строчка пуста, выводится двойной знак препинания ";;".
Как обойти такую проблемку?

И вообще непонятно причем здесь
одинаковые значения в первой

Юрий_Нд, с дополнительным столбцом можно. без - только прямыми ссылками типа функции СЦЕПИТЬ

Автор - _Boroda_
Дата добавления - 06.09.2017 в 17:07
Юрий_Нд Дата: Среда, 06.09.2017, 17:26 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
с дополнительным столбцом можно

Простите, _Boroda_, не понял, Вы говорите о 9-том столбце из Вашего 7-го поста?
 
Ответить
Сообщение
с дополнительным столбцом можно

Простите, _Boroda_, не понял, Вы говорите о 9-том столбце из Вашего 7-го поста?

Автор - Юрий_Нд
Дата добавления - 06.09.2017 в 17:26
sboy Дата: Среда, 06.09.2017, 17:35 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Можно, вот так поизвращаться.
собрать данные снизу вверх(формулу протягиваем от последнего значения к первому) и ненужные скрыть цветом шрифта
К сообщению приложен файл: 8011335-1-.xlsm (15.4 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеМожно, вот так поизвращаться.
собрать данные снизу вверх(формулу протягиваем от последнего значения к первому) и ненужные скрыть цветом шрифта

Автор - sboy
Дата добавления - 06.09.2017 в 17:35
_Boroda_ Дата: Среда, 06.09.2017, 17:38 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16880
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Вы говорите о 9-том столбце из Вашего 7-го поста?

Нет. Я говорю о дополнительном столбце вообще вне таблицы или в скрытом (у меня в файле столбец М)
9-й столбец с формулами, которые Вы раньше попросили нас написать. А вот 8-й столбец не совсем ясно зачем
Файл с формулой до строки 111. Если нужно больше, то сделайте у столбца М ненулевую ширину и протяните там формулы еще ниже
К сообщению приложен файл: 1806130-1-2.xlsx (11.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Вы говорите о 9-том столбце из Вашего 7-го поста?

Нет. Я говорю о дополнительном столбце вообще вне таблицы или в скрытом (у меня в файле столбец М)
9-й столбец с формулами, которые Вы раньше попросили нас написать. А вот 8-й столбец не совсем ясно зачем
Файл с формулой до строки 111. Если нужно больше, то сделайте у столбца М ненулевую ширину и протяните там формулы еще ниже

Автор - _Boroda_
Дата добавления - 06.09.2017 в 17:38
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!