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

Вход

Регистрация

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

 

= Мир MS Excel/сцепить по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
сцепить по условию
Антон1984 Дата: Понедельник, 02.10.2023, 17:02 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Антон1984
Дата добавления - 02.10.2023 в 17:02
msi2102 Дата: Понедельник, 02.10.2023, 20:53 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 414
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Попробуйте такой макрос
[vba]
Код
Sub Макрос1()
    Dim arr1, arr2, st As String
    arr1 = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For n = UBound(arr1) To LBound(arr1) Step -1
        If Not arr1(n, 3) = "" Then st = "(" & arr1(n, 3) & "); " & st
        If Not arr1(n, 2) = "" Then arr2(n, 1) = Left(st, Len(st) - 2): st = ""
    Next
    Range("E2").Resize(UBound(arr2), 1) = arr2
End Sub
[/vba]
К сообщению приложен файл: komplektacija_iznachalnyj_vid.xlsm (25.3 Kb)
 
Ответить
СообщениеПопробуйте такой макрос
[vba]
Код
Sub Макрос1()
    Dim arr1, arr2, st As String
    arr1 = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    For n = UBound(arr1) To LBound(arr1) Step -1
        If Not arr1(n, 3) = "" Then st = "(" & arr1(n, 3) & "); " & st
        If Not arr1(n, 2) = "" Then arr2(n, 1) = Left(st, Len(st) - 2): st = ""
    Next
    Range("E2").Resize(UBound(arr2), 1) = arr2
End Sub
[/vba]

Автор - msi2102
Дата добавления - 02.10.2023 в 20:53
Антон1984 Дата: Вторник, 03.10.2023, 07:59 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

спасибо большое.
 
Ответить
Сообщениеспасибо большое.

Автор - Антон1984
Дата добавления - 03.10.2023 в 07:59
китин Дата: Вторник, 03.10.2023, 08:39 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7021
Репутация: 1075 ±
Замечаний: 0% ±

Excel 2007;2010;2016
PQ всемогущий
К сообщению приложен файл: komplektacija_iznachalnyj_vid_.xlsx (25.0 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеPQ всемогущий

Автор - китин
Дата добавления - 03.10.2023 в 08:39
msi2102 Дата: Вторник, 03.10.2023, 10:48 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 414
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Замените строку:
[vba]
Код
   arr1 = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]
на
[vba]
Код
   arr1 = Range("A2:D" & Cells(Rows.Count, 3).End(xlUp).Row)
[/vba]
 
Ответить
СообщениеЗамените строку:
[vba]
Код
   arr1 = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]
на
[vba]
Код
   arr1 = Range("A2:D" & Cells(Rows.Count, 3).End(xlUp).Row)
[/vba]

Автор - msi2102
Дата добавления - 03.10.2023 в 10:48
jakim Дата: Вторник, 03.10.2023, 15:18 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1208
Репутация: 314 ±
Замечаний: 0% ±

Excel 2010
Power Query

[vba]
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Filtered Rows" = Table.SelectRows(Source, each ([Модификация] <> null)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Дата выпуска"}),
    #"Filled Down" = Table.FillDown(#"Removed Columns",{"Марка", "Модель"}),
    #"Grouped Rows" = Table.Group(#"Filled Down", {"Марка", "Модель"}, {{"Count", each _, type table [Марка=text, Модель=text, Модификация=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Count][Модификация]),
    #"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Count"}),
    #"Extracted Values" = Table.TransformColumns(#"Removed Columns1", {"Custom", each Text.Combine(List.Transform(_, Text.From), "; "), type text}),
    #"Renamed Columns" = Table.RenameColumns(#"Extracted Values",{{"Custom", "Модификация"}})
in
    #"Renamed Columns"
[/vba]
К сообщению приложен файл: 2148295.xlsx (23.4 Kb)
 
Ответить
Сообщение
Power Query

[vba]
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Filtered Rows" = Table.SelectRows(Source, each ([Модификация] <> null)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Дата выпуска"}),
    #"Filled Down" = Table.FillDown(#"Removed Columns",{"Марка", "Модель"}),
    #"Grouped Rows" = Table.Group(#"Filled Down", {"Марка", "Модель"}, {{"Count", each _, type table [Марка=text, Модель=text, Модификация=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Count][Модификация]),
    #"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Count"}),
    #"Extracted Values" = Table.TransformColumns(#"Removed Columns1", {"Custom", each Text.Combine(List.Transform(_, Text.From), "; "), type text}),
    #"Renamed Columns" = Table.RenameColumns(#"Extracted Values",{{"Custom", "Модификация"}})
in
    #"Renamed Columns"
[/vba]

Автор - jakim
Дата добавления - 03.10.2023 в 15:18
  • Страница 1 из 1
  • 1
Поиск:

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