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

Вход

Регистрация

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

 

= Мир MS Excel/Автозамена букв на соответствующие им цифры - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Автозамена букв на соответствующие им цифры
vyacheslavshashkin Дата: Четверг, 09.02.2023, 20:38 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Дядьки, приветствую.

Имеется таблица соответствия букв и цифр. Справа в столбце K пишем 3 слова в отдельных ячейках. В столбце L должна получиться прямая замена букв на соответствующие им цифры. Для примера руками заполнил что должно получиться автоматически. Всё :)
К сообщению приложен файл: _____.xlsx (8.4 Kb)
 
Ответить
СообщениеДядьки, приветствую.

Имеется таблица соответствия букв и цифр. Справа в столбце K пишем 3 слова в отдельных ячейках. В столбце L должна получиться прямая замена букв на соответствующие им цифры. Для примера руками заполнил что должно получиться автоматически. Всё :)

Автор - vyacheslavshashkin
Дата добавления - 09.02.2023 в 20:38
bmv98rus Дата: Четверг, 09.02.2023, 21:21 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
так как нет указания на версию Excel , а в последних есть функции значительно упрощающие формулу, то, с ограничением до 15 символов
Код
=SUMPRODUCT((MOD(FIND(LOWER(MID(K1;ROW($A$1:INDEX(A:A;LEN(K1)));1));"абвгдеёжзийклмнопрстуфхцчшщъыьэюя")-1;9)+1)*10^(LEN(K1)-ROW($A$1:INDEX(A:A;LEN(K1)))))

Можно сделать длинно и бех этого ограничения
Код
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(K1);"а";1);"б";2);"в";3);"г";4);"д";5);"е";6);"ё";7);"ж";8);"з";9);"и";1);"й";2);"к";3);"л";4);"м";5);"н";6);"о";7);"п";8);"р";9);"с";1);"т";2);"у";3);"ф";4);"х";5);"ц";6);"ч";7);"ш";8);"щ";9);"ъ";1);"ы";2);"ь";3);"э";4);"ю";5);"я";6)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 09.02.2023, 21:22
 
Ответить
Сообщениетак как нет указания на версию Excel , а в последних есть функции значительно упрощающие формулу, то, с ограничением до 15 символов
Код
=SUMPRODUCT((MOD(FIND(LOWER(MID(K1;ROW($A$1:INDEX(A:A;LEN(K1)));1));"абвгдеёжзийклмнопрстуфхцчшщъыьэюя")-1;9)+1)*10^(LEN(K1)-ROW($A$1:INDEX(A:A;LEN(K1)))))

Можно сделать длинно и бех этого ограничения
Код
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(K1);"а";1);"б";2);"в";3);"г";4);"д";5);"е";6);"ё";7);"ж";8);"з";9);"и";1);"й";2);"к";3);"л";4);"м";5);"н";6);"о";7);"п";8);"р";9);"с";1);"т";2);"у";3);"ф";4);"х";5);"ц";6);"ч";7);"ш";8);"щ";9);"ъ";1);"ы";2);"ь";3);"э";4);"ю";5);"я";6)

Автор - bmv98rus
Дата добавления - 09.02.2023 в 21:21
Egyptian Дата: Четверг, 09.02.2023, 22:47 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 526
Репутация: 193 ±
Замечаний: 0% ±

Excel 2013/2016
Вариант на Power Query (принцип подсмотрен на профильном канале в телеге)
[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    fullrec = [а="1",А="1",б="2",Б="2",в="3",В="3",г="4",Г="4",д="5",Д="5",е="6",Е="6",ё="7",Ё="7",ж="8",Ж="8",з="9",З="9",и="1",
              И="1",й="11",Й="2",к="3",К="3",л="4",Л="4",м="5",М="5",н="6",Н="6",о="7",О="7",п="8",П="8",р="9",Р="9",с="1",С="1",
              т="2",Т="2",у="3",У="3",ф="4",Ф="4",х="5",Х="5",ц="6",Ц="6",ч="7",Ч="7",ш="8",Ш="8",щ="9",Щ="9",ъ="1",Ъ="1",ы="2",
              Ы="2",ь="3",Ь="3",э="4",Э="4",ю="5",Ю="5",я="6",Я="6",null=" "],
    out =Table.TransformColumns(from,{"Дата",(x)=>Text.Combine(List.Transform(Text.ToList(x),(y)=>Record.Field(fullrec,y)))}),
    ren = Table.TransformColumnTypes(Table.RenameColumns(out,{"Дата", "Числа"}),{"Числа", Int64.Type})
in
    ren
[/vba]
Плюс в том, что в плане наличия внутренней таблицы соответствия запрос практически портабельный. Хотя, наверняка можно еще что-нибудь оптимизировать.
К сообщению приложен файл: 11111111.xlsx (18.7 Kb)


Сообщение отредактировал Egyptian - Пятница, 10.02.2023, 02:07
 
Ответить
СообщениеВариант на Power Query (принцип подсмотрен на профильном канале в телеге)
[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    fullrec = [а="1",А="1",б="2",Б="2",в="3",В="3",г="4",Г="4",д="5",Д="5",е="6",Е="6",ё="7",Ё="7",ж="8",Ж="8",з="9",З="9",и="1",
              И="1",й="11",Й="2",к="3",К="3",л="4",Л="4",м="5",М="5",н="6",Н="6",о="7",О="7",п="8",П="8",р="9",Р="9",с="1",С="1",
              т="2",Т="2",у="3",У="3",ф="4",Ф="4",х="5",Х="5",ц="6",Ц="6",ч="7",Ч="7",ш="8",Ш="8",щ="9",Щ="9",ъ="1",Ъ="1",ы="2",
              Ы="2",ь="3",Ь="3",э="4",Э="4",ю="5",Ю="5",я="6",Я="6",null=" "],
    out =Table.TransformColumns(from,{"Дата",(x)=>Text.Combine(List.Transform(Text.ToList(x),(y)=>Record.Field(fullrec,y)))}),
    ren = Table.TransformColumnTypes(Table.RenameColumns(out,{"Дата", "Числа"}),{"Числа", Int64.Type})
in
    ren
[/vba]
Плюс в том, что в плане наличия внутренней таблицы соответствия запрос практически портабельный. Хотя, наверняка можно еще что-нибудь оптимизировать.

Автор - Egyptian
Дата добавления - 09.02.2023 в 22:47
vyacheslavshashkin Дата: Четверг, 09.02.2023, 23:19 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

так как нет указания на версию Excel

Сорямба, забыл. 2013.

А вообще вторая формула прекрасно работает. Спасибо!


Сообщение отредактировал vyacheslavshashkin - Четверг, 09.02.2023, 23:20
 
Ответить
Сообщение
так как нет указания на версию Excel

Сорямба, забыл. 2013.

А вообще вторая формула прекрасно работает. Спасибо!

Автор - vyacheslavshashkin
Дата добавления - 09.02.2023 в 23:19
прохожий2019 Дата: Пятница, 10.02.2023, 00:53 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
есть функции значительно упрощающие формулу
Код
=СЦЕП(MAP(ПСТР(K1;ПОСЛЕД(ДЛСТР(K1));1);LAMBDA(x;МАКС(СТОЛБЕЦ($A$2:$I$5)*($A$2:$I$5=x)))))
:)
 
Ответить
Сообщение
есть функции значительно упрощающие формулу
Код
=СЦЕП(MAP(ПСТР(K1;ПОСЛЕД(ДЛСТР(K1));1);LAMBDA(x;МАКС(СТОЛБЕЦ($A$2:$I$5)*($A$2:$I$5=x)))))
:)

Автор - прохожий2019
Дата добавления - 10.02.2023 в 00:53
прохожий2019 Дата: Пятница, 10.02.2023, 01:03 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
Хотя, наверняка можно еще что-нибудь оптимизировать.
да как бы в оригинале было [vba]
Код
(y)=>Record.Field(fullrec,y)
[/vba] это процентов на 20 эффективнее
 
Ответить
Сообщение
Хотя, наверняка можно еще что-нибудь оптимизировать.
да как бы в оригинале было [vba]
Код
(y)=>Record.Field(fullrec,y)
[/vba] это процентов на 20 эффективнее

Автор - прохожий2019
Дата добавления - 10.02.2023 в 01:03
Egyptian Дата: Пятница, 10.02.2023, 02:09 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 526
Репутация: 193 ±
Замечаний: 0% ±

Excel 2013/2016
Цитата прохожий2019, 10.02.2023 в 01:03, в сообщении № 6 ()
процентов на 20 эффективнее

Да, спасибо. Сделал поправку и обновил файл.
 
Ответить
Сообщение
Цитата прохожий2019, 10.02.2023 в 01:03, в сообщении № 6 ()
процентов на 20 эффективнее

Да, спасибо. Сделал поправку и обновил файл.

Автор - Egyptian
Дата добавления - 10.02.2023 в 02:09
  • Страница 1 из 1
  • 1
Поиск:

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