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

Вход

Регистрация

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

 

= Мир MS Excel/Сцепление ячеек, в которых значения через запяту - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Сцепление ячеек, в которых значения через запяту
VadimVV Дата: Четверг, 17.07.2014, 10:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добрый день.
Есть группа ячеек вида:

А1_____________B1
213 | 600, 65-67, 689, 69, 9619

Как сделать так, чтобы в ячейке А2 получить значение 213600, А3 21365, А4 21366, А5 21367, А6 213689 и так далее.

Заранее, благодарю.
[moder]Где файл? Накажу

Сорри, файл добавил
К сообщению приложен файл: 8513455.xlsx (9.6 Kb)


Сообщение отредактировал VadimVV - Четверг, 17.07.2014, 12:41
 
Ответить
СообщениеДобрый день.
Есть группа ячеек вида:

А1_____________B1
213 | 600, 65-67, 689, 69, 9619

Как сделать так, чтобы в ячейке А2 получить значение 213600, А3 21365, А4 21366, А5 21367, А6 213689 и так далее.

Заранее, благодарю.
[moder]Где файл? Накажу

Сорри, файл добавил

Автор - VadimVV
Дата добавления - 17.07.2014 в 10:18
VadimVV Дата: Четверг, 17.07.2014, 12:45 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добавил файл с примером.
 
Ответить
СообщениеДобавил файл с примером.

Автор - VadimVV
Дата добавления - 17.07.2014 в 12:45
VadimVV Дата: Понедельник, 21.07.2014, 10:19 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Коллеги, есть какие-нибудь варианты решения?
 
Ответить
СообщениеКоллеги, есть какие-нибудь варианты решения?

Автор - VadimVV
Дата добавления - 21.07.2014 в 10:19
Hugo Дата: Понедельник, 21.07.2014, 11:12 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Когда-то совместно делали такую UDF:
[vba]
Код
Function ExpandListA(ByVal Src As String, _
                      Optional GrSep$ = ",", _
                      Optional InGrSep$ = "-", _
                      Optional DelChar1$ = " ", _
                      Optional DelChar2$ = " ", _
                      Optional DelChar3$ = " ", _
                      Optional outSep$ = "; ") As String
     Dim elem, aNums, j As Long, n1 As Long, n2 As Long

     Src = Replace(Src, DelChar1$, "")
     Src = Replace(Src, DelChar2$, "")
     Src = Replace(Src, DelChar3$, "")
     If Src = "" Then Exit Function
     For Each elem In Split(Src, GrSep)
         aNums = Split(elem, InGrSep)
         n1 = aNums(0)
         n2 = aNums(UBound(aNums))
         For j = n1 To n2 Step IIf(n1 < n2, 1, -1)
             ExpandListA = ExpandListA & outSep & j
         Next
     Next
     ExpandListA = Mid(ExpandListA, Len(outSep) + 1)
End Function
[/vba]
Можно использовать в макросе.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеКогда-то совместно делали такую UDF:
[vba]
Код
Function ExpandListA(ByVal Src As String, _
                      Optional GrSep$ = ",", _
                      Optional InGrSep$ = "-", _
                      Optional DelChar1$ = " ", _
                      Optional DelChar2$ = " ", _
                      Optional DelChar3$ = " ", _
                      Optional outSep$ = "; ") As String
     Dim elem, aNums, j As Long, n1 As Long, n2 As Long

     Src = Replace(Src, DelChar1$, "")
     Src = Replace(Src, DelChar2$, "")
     Src = Replace(Src, DelChar3$, "")
     If Src = "" Then Exit Function
     For Each elem In Split(Src, GrSep)
         aNums = Split(elem, InGrSep)
         n1 = aNums(0)
         n2 = aNums(UBound(aNums))
         For j = n1 To n2 Step IIf(n1 < n2, 1, -1)
             ExpandListA = ExpandListA & outSep & j
         Next
     Next
     ExpandListA = Mid(ExpandListA, Len(outSep) + 1)
End Function
[/vba]
Можно использовать в макросе.

Автор - Hugo
Дата добавления - 21.07.2014 в 11:12
VadimVV Дата: Понедельник, 21.07.2014, 13:00 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Что-то не получается запустить его
 
Ответить
СообщениеЧто-то не получается запустить его

Автор - VadimVV
Дата добавления - 21.07.2014 в 13:00
Hugo Дата: Понедельник, 21.07.2014, 13:42 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Его не нужно запускать, и вообще это она :)
Это функция пользователя, можно использовать на листе или в коде, она раскладывает Ваши записи в перечисление через выбранный разделитель.
Вот её результат можно использовать в коде для генерации таблицы.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЕго не нужно запускать, и вообще это она :)
Это функция пользователя, можно использовать на листе или в коде, она раскладывает Ваши записи в перечисление через выбранный разделитель.
Вот её результат можно использовать в коде для генерации таблицы.

Автор - Hugo
Дата добавления - 21.07.2014 в 13:42
VadimVV Дата: Понедельник, 21.07.2014, 15:12 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
ага, разобрался. Осталось понять, какие аргументы этой функции необходимо указывать в полях Src, GrSep, InGrSep
 
Ответить
Сообщениеага, разобрался. Осталось понять, какие аргументы этой функции необходимо указывать в полях Src, GrSep, InGrSep

Автор - VadimVV
Дата добавления - 21.07.2014 в 15:12
Hugo Дата: Понедельник, 21.07.2014, 16:32 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Src - исходная строка
GrSep - разделитель групп
InGrSep - разделитель в группе
DelChar1/2/3 - это возможные варианты мусора в строке.
На Вашем примере достаточно указать только исходную строку, остальное подставится что прописано по умолчанию в коде.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеSrc - исходная строка
GrSep - разделитель групп
InGrSep - разделитель в группе
DelChar1/2/3 - это возможные варианты мусора в строке.
На Вашем примере достаточно указать только исходную строку, остальное подставится что прописано по умолчанию в коде.

Автор - Hugo
Дата добавления - 21.07.2014 в 16:32
VadimVV Дата: Понедельник, 21.07.2014, 17:01 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Подставил, но результат получается не такой, как нужно. Перечень цифр идет через ";" в одну строку. Мне же необходимо, чтобы каждое число было в новой ячейке.

Добавил в примере лист "как получается".
К сообщению приложен файл: 4954638.xlsx (10.5 Kb)
 
Ответить
СообщениеПодставил, но результат получается не такой, как нужно. Перечень цифр идет через ";" в одну строку. Мне же необходимо, чтобы каждое число было в новой ячейке.

Добавил в примере лист "как получается".

Автор - VadimVV
Дата добавления - 21.07.2014 в 17:01
Hugo Дата: Понедельник, 21.07.2014, 17:06 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Ну вот теперь берёте эту строку (можно/лучше прямо от функции, без выгрузки на лист), разбиваете в массив по разделителю, гененрите соответствующий массив для результата, заполняете его данными, выгружаете на лист ниже последней заполненной ячейки. Далее берёте следующую исходную строку и т.д.

Я вот только в примере не понял - а куда дели ещё пару-тройку строк для Австрия (mob) - Mobilkom? Если не нужны - тогда в примере нет логики. Я исходил из того, что и они нужны.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу вот теперь берёте эту строку (можно/лучше прямо от функции, без выгрузки на лист), разбиваете в массив по разделителю, гененрите соответствующий массив для результата, заполняете его данными, выгружаете на лист ниже последней заполненной ячейки. Далее берёте следующую исходную строку и т.д.

Я вот только в примере не понял - а куда дели ещё пару-тройку строк для Австрия (mob) - Mobilkom? Если не нужны - тогда в примере нет логики. Я исходил из того, что и они нужны.

Автор - Hugo
Дата добавления - 21.07.2014 в 17:06
VadimVV Дата: Понедельник, 21.07.2014, 17:23 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Все нужны, я пока пробую с первой строкой.

У меня получается разбиение по ячейка в строке, но не в столбец.
Т.е. я беру первую строку, значения начинают через ; идти, затем использую "Текст по столбцам", каждое значение получается в новой ячейке, но ячейки идут в строку, а не в столбец и знак ";" не убирается.

Можно, конечно, остальное в ручном режиме сделать, но там итоговая таблица больше, чем на тысячу строк...


Сообщение отредактировал VadimVV - Понедельник, 21.07.2014, 17:30
 
Ответить
СообщениеВсе нужны, я пока пробую с первой строкой.

У меня получается разбиение по ячейка в строке, но не в столбец.
Т.е. я беру первую строку, значения начинают через ; идти, затем использую "Текст по столбцам", каждое значение получается в новой ячейке, но ячейки идут в строку, а не в столбец и знак ";" не убирается.

Можно, конечно, остальное в ручном режиме сделать, но там итоговая таблица больше, чем на тысячу строк...

Автор - VadimVV
Дата добавления - 21.07.2014 в 17:23
Hugo Дата: Понедельник, 21.07.2014, 18:36 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Чувствую Вам нужно начинать с Hello, World!... :(
Но т.к. ветка фомульная - ждём предложений формулами? Или перенести уже в VBA?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЧувствую Вам нужно начинать с Hello, World!... :(
Но т.к. ветка фомульная - ждём предложений формулами? Или перенести уже в VBA?

Автор - Hugo
Дата добавления - 21.07.2014 в 18:36
VadimVV Дата: Вторник, 22.07.2014, 09:47 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Ну в целом - да, начинать с Hello world :). В программировании не силен, хотя в школе на паскале писал, в универе вижуал бейсик проходили один семестр :)

Читая код, относительно понимаю, что он делает, но как его заставить работать - знаний не хватает.

Если не сильно трудозатратно, то лучше в VBA перенести.


Сообщение отредактировал VadimVV - Вторник, 22.07.2014, 09:48
 
Ответить
СообщениеНу в целом - да, начинать с Hello world :). В программировании не силен, хотя в школе на паскале писал, в универе вижуал бейсик проходили один семестр :)

Читая код, относительно понимаю, что он делает, но как его заставить работать - знаний не хватает.

Если не сильно трудозатратно, то лучше в VBA перенести.

Автор - VadimVV
Дата добавления - 22.07.2014 в 09:47
Hugo Дата: Вторник, 22.07.2014, 10:08 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Перенести тему легко. Вот код писать пока некогда - там где-то 30-40 минут нужно выделить (с учётом использования уже этой готовой функции).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПеренести тему легко. Вот код писать пока некогда - там где-то 30-40 минут нужно выделить (с учётом использования уже этой готовой функции).

Автор - Hugo
Дата добавления - 22.07.2014 в 10:08
  • Страница 1 из 1
  • 1
Поиск:

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