Страницы: 1
RSS
Преобразование с поиском максимального в группе
 
Здравствуйте уважаемые Гуру.

Помогите пжста решить задачу.

Есть таблица на листе source данные в ячейке состоят из 3х букв и 3х цифр(по умолчанию они соединены в буквенно цифровой код),
Буквенно цифровые коды условно можно объединить в группы , где первые 3 буквы остаются постоянными а меняются последние 3 цифры в порядке увеличения.
Нужно на новом листе result получить новую таблицу где для группы  буквенно цифровых кодов будет сформировано следующее по порядку значение.
Наверное не очень понятно написал, простите пожалуйста, но то что должно получиться хорошо видно на приложенном примере.
Изменено: ageres1982 - 06.11.2020 13:26:51
 
Доброе время суток.
Версия на Power Query.
 
Добрый и Вам. Формула массива:
Код
=ЛЕВСИМВ(ИНДЕКС(source!$A$1:$A$26;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(ЛЕВСИМВ(source!$A$1:$A$26;3);ЛЕВСИМВ(source!$A$1:$A$26;3);)=СТРОКА(source!$A$1:$A$26);СТРОКА(source!$A$1:$A$26));СТРОКА()));3)&ТЕКСТ(МАКС(ЕСЛИ(ЛЕВСИМВ(ИНДЕКС(source!$A$1:$A$26;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(ЛЕВСИМВ(source!$A$1:$A$26;3);ЛЕВСИМВ(source!$A$1:$A$26;3);)=СТРОКА(source!$A$1:$A$26);СТРОКА(source!$A$1:$A$26));СТРОКА()));3)=ЕСЛИ({1;0};ЛЕВСИМВ(source!$A$1:$A$26;3);--ПРАВСИМВ(source!$A$1:$A$26;3));--ПРАВСИМВ(source!$A$1:$A$26;3)))+1;"000")

или так чуть короче:

Код
=ЗАМЕНИТЬ(ИНДЕКС(source!A$1:A$26;НАИМЕНЬШИЙ(ЕСЛИ(ЛЕВСИМВ(source!A$1:A$26;3)<>ЛЕВСИМВ(source!A$2:A$27;3);СТРОКА(source!A$1:A$26));СТРОКА()));4;3;ТЕКСТ(ПРАВСИМВ(ИНДЕКС(source!A$1:A$26;НАИМЕНЬШИЙ(ЕСЛИ(ЛЕВСИМВ(source!A$1:A$26;3)<>ЛЕВСИМВ(source!A$2:A$27;3);СТРОКА(source!A$1:A$26));СТРОКА()));3)+1;"000"))

Изменено: Максим В. - 06.11.2020 14:24:57 (Добавил формулу)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
почти аналогично как у Максим В.,
Код
=ИНДЕКС(ЛЕВБ(source!$A$1:$A$26;3);НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(ЛЕВБ(source!$A$1:$A$26;3);ЛЕВБ(source!$A$1:$A$26;3);0)=СТРОКА(source!$A$1:$A$26);СТРОКА(source!$A$1:$A$26));СТРОКА()))&ТЕКСТ(МАКС(ЕСЛИ(ЛЕВБ(source!$A$1:$A$26;3)=ИНДЕКС(ЛЕВБ(source!$A$1:$A$26;3);НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(ЛЕВБ(source!$A$1:$A$26;3);ЛЕВБ(source!$A$1:$A$26;3);0)=СТРОКА(source!$A$1:$A$26);СТРОКА(source!$A$1:$A$26));СТРОКА()));--ПРАВБ(source!$A$1:$A$26;3)))+1;"000")
Лень двигатель прогресса, доказано!!!
 
del
Изменено: buchlotnik - 23.08.2021 18:00:52
Соблюдение правил форума не освобождает от модераторского произвола
 
Андрей VG, Максим В., Сергей,buchlotnik
низкий поклон Вам и спасибо огромное.
 
Андрей VG Доброго Вам дня.
вот не пойму как эта штука работает в Вашем решении:
List.Transform(sub[#"number"], Number.From)
Смотрю функции
https://docs.microsoft.com/ru-ru/powerquery-m/list-transform
https://docs.microsoft.com/ru-ru/powerquery-m/number-from
и не понимаю как Number.From передаём значения....
если не сложно можете пояснить?
Страницы: 1
Наверх