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

 

= Мир MS Excel/Подставить значения в ячейку с разделителем из массива. - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Подставить значения в ячейку с разделителем из массива.
Egyptian Дата: Вторник, 02.08.2022, 14:49 | Сообщение № 21
Группа: Проверенные
Ранг: Ветеран
Сообщений: 531
Репутация: 194 ±
Замечаний: 0% ±

Excel 2013/2016
scriptapplications, Видимо дело все-таки в версиях Excel. Судя по всему в версиях вплоть до 2019 функция INDEX просто не принимает массив строк, (к примеру для первой строки {2;3;4;5;6;7;8;9}), который подсовывает ей MATCH. Для того чтобы объяснить INDEX-у что так делать не следует, можно прибегнуть к некоему трюку, например такому:
=ОБЪЕДИНИТЬ(";";1;ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$59;Ч(ИНДЕКС(ПОИСКПОЗ(СЖПРОБЕЛЫ(ПСТР( C2; НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ(3); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "" )) + 1)))); НАЙТИ( ";"; ";"&C2&";"; НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ( 3 ); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "")) + 1)))) + 1) - НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ(3); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "")) + 1)))) - 1));$B$2:$B$59;0);)));""))

Теперь, если выделить MATCH обернутый в N(INDEX...) и нажать F9 но можно опять увидеть тот же самый массив строк {2;3;4;5;6;7;8;9} (ну как тут не вспомнить анекдот про суслика), который, INDEX принимает и передает функции TEXTJOIN, как массив значений.
 
Ответить
Сообщениеscriptapplications, Видимо дело все-таки в версиях Excel. Судя по всему в версиях вплоть до 2019 функция INDEX просто не принимает массив строк, (к примеру для первой строки {2;3;4;5;6;7;8;9}), который подсовывает ей MATCH. Для того чтобы объяснить INDEX-у что так делать не следует, можно прибегнуть к некоему трюку, например такому:
=ОБЪЕДИНИТЬ(";";1;ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$59;Ч(ИНДЕКС(ПОИСКПОЗ(СЖПРОБЕЛЫ(ПСТР( C2; НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ(3); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "" )) + 1)))); НАЙТИ( ";"; ";"&C2&";"; НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ( 3 ); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "")) + 1)))) + 1) - НАЙТИ( СИМВОЛ( 3 ); ПОДСТАВИТЬ( ";"&C2; ";"; СИМВОЛ(3); СТРОКА( ДВССЫЛ( "1:"&ДЛСТР( C2 ) - ДЛСТР( ПОДСТАВИТЬ( C2; ";"; "")) + 1)))) - 1));$B$2:$B$59;0);)));""))

Теперь, если выделить MATCH обернутый в N(INDEX...) и нажать F9 но можно опять увидеть тот же самый массив строк {2;3;4;5;6;7;8;9} (ну как тут не вспомнить анекдот про суслика), который, INDEX принимает и передает функции TEXTJOIN, как массив значений.

Автор - Egyptian
Дата добавления - 02.08.2022 в 14:49
jakim Дата: Вторник, 02.08.2022, 15:54 | Сообщение № 22
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
Power Query

let
    Source = Excel.CurrentWorkbook(){[Name="Для_Алексея"]}[Content],
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Др. цвета", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Др. цвета.1", "Др. цвета.2", "Др. цвета.3", "Др. цвета.4", "Др. цвета.5", "Др. цвета.6", "Др. цвета.7", "Др. цвета.8"}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Split Column by Delimiter", {"ID", "Артикул"}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Other Columns",{"Артикул", "Attribute"}),
    #"Trimmed Text" = Table.TransformColumns(#"Removed Columns",{{"Value", Text.Trim, type text}}),
    #"Sorted Rows" = Table.Sort(#"Trimmed Text",{{"Value", Order.Ascending}}),
    #"Grouped Rows" = Table.Group(#"Sorted Rows", {"Value"}, {{"Count", each _, type table [ID=number, Value=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Count][ID]),
    #"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", "ID"}}),
    #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns",{"Value"})
in
    #"Removed Columns2"

К сообщению приложен файл: 9850874.xlsx (20.4 Kb)
 
Ответить
Сообщение
Power Query

[vba]
let    Source = Excel.CurrentWorkbook(){[Name="Для_Алексея"]}[Content];    Source"Split Column by Delimiter" = Тable.SplitColumn(QuoteStyle.Csv; "Др. цвета"; Splitter.SplitТextByDelimiter(";"; Text.Trim); {"Др. цвета.1"; "Др. цвета.2"; "Др. цвета.3"; "Др. цвета.4"; "Др. цвета.5"; "Др. цвета.6"; "Др. цвета.7"; "Др. цвета.8"});    type"Unpivoted Other Columns" = Тable.UnpivotOtherColumns(text"Split Column by Delimiter"; {"ID"; "Артикул"}; "Attribute"; "Value");    Order.Ascending"Removed Columns" = Тable.RemoveColumns(each"Unpivoted Other Columns";{"Артикул"; "Attribute"});    _"Тrimmed Тext" = Тable.TransformColumns(type"Removed Columns";{{"Value"; table; ID number}});    Value"Sorted Rows" = Тable.Sort(text"Тrimmed Тext";{{"Value"; each}});    Count"Grouped Rows" = Тable.Group(ID"Sorted Rows"; {"Value"}; {{"Count"; each _; Text.From type [text=in; undefined=undefined]}});    undefined"Added Custom" = Тable.AddColumn(undefined"Grouped Rows"; "Custom"; undefined [undefined][undefined]);    undefined"Removed Columns1" = Тable.RemoveColumns(undefined"Added Custom";{"Count"});    undefined"Extracted Values" = Тable.TransformColumns(undefined"Removed Columns1"; {"Custom"; undefined Тext.Combine(List.Transform(undefined; undefined); "; "); undefined undefined});    undefined"Renamed Columns" = Тable.RenameColumns(undefined"Extracted Values";{{"Custom"; "ID"}});    undefined"Removed Columns2" = Тable.RemoveColumns(undefined"Renamed Columns";{"Value"})undefined    undefined"Removed Columns2"
[/vba]

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

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