Задача потребує знання функцій ВПР та СМЕЩ, функцій обробки тексту та помилок, а також вміння роботи з основними математичними операторами та різними типами посилань.
Завантажити розв'язання
Задача практично повністю охоплює функції для роботи з рядками в Excel. Розіб’ємо її на три частини: переклад слова з кожної з мов азбукою Морзе, переклад з морзянки кожною мовою, вибір серед трьох перекладів потрібний на основі обраної користувачем мови.
Оскільки переклади різними мовами не відрізнятимуться одне від одного суттєво, ми розглядатимемо тут лише переклад українською, інші виконуються аналогічно та потребують лише зміни діапазонів.
Для перекладу українського слова морзянкою нам необхідно спочатку розділити його на окремі літери. Для цього поступово відділятимемо по одній літері зліва за допомогою функцій ЛЕВСИМВ (LEFT), ПРАВСИМВ (RIGHT), ЕСЛИ (IF) та ДЛСТР (LEN):
B4=B1
C4=ЛЕВСИМВ(B4)
B5=ПРАВСИМВ(B4; ЕСЛИ(ДЛСТР(B4)>1; ДЛСТР(B4); 1) -1)
Ці формули потрібно буде протягнути на 30 рядків, оскільки за умовою завдання літер в слові не більше тридцяти.
Після цього для кожної літери знайдемо відповідник морзянкою за допомогою функції ВПР (VLOOKUP). Якщо функція поверне помилку, це означає, що відповідник не знайдено, тому просто опустимо цю літеру в результаті:
D4=ЕСЛИОШИБКА(ВПР(C4; $P$2:$Q$33; 2; ЛОЖЬ); "")
Формула також протягується на 30 рядків.
Тепер потрібно зчепити усі отримані символи. Оскільки функція СЦЕПИТЬ (CONCATENATE) не працює з діапазонами, це потрібно буде робити поступово:
E4=D4
E5=СЦЕПИТЬ(E4; ЕСЛИ(D5="";"";" "); D5)
Аби в результаті не було зайвих пробілів, перед першим та пустими символами ми їх не ставимо, а інакше він виступатиме розділювачем між символами морзянки.
Таким чином, в комірці E33 буде результат перекладу морзянкою. Для зручності помістимо його в комірку E1.
Переклад морзянки українською потребує дещо іншого підходу. Тепер нам потрібно розділити рядок, що подається в комірці B2, за пробілами та виконати зворотній пошук.
Для цього знайдемо позицію пробілу в поточному рядку, рядок до пробілу збережемо в стовпці I, а все інше (крім, звісна річ, пробілу) – в стовпці G і далі продовжуватимемо виконувати ті ж дії з новим рядком. Якщо пробіл не було знайдено (це ми визначимо за допомогою функції ЕСЛИОШИБКА - IFERROR) в результат було передано весь рядок:
G4=B2
H4=НАЙТИ(" "; G4)
G5=ПРАВСИМВ(G4; ДЛСТР(G4)-H4)
I4=ЕСЛИОШИБКА(ЛЕВСИМВ(G4; H4-1); G4)
Формули, звісна річ, потрібно протягнути на 30 рядків відповідно до максимальної кількості літер в слові.
Тепер в нас є розкладена на літери морзянка, яку потрібно перетворити за допомогою функції ВПР на літери українського алфавіту. Але, оскільки ВПР здійснює пошук лише за першим стовпцем, необхідно піти на певну хитрість: ми продублюємо українські літери в стопці R та використаємо вже новий діапазон:
J4=ЕСЛИОШИБКА(ВПР(I4; $Q$2:$R$33; 2; ЛОЖЬ); "")
Далі знов-таки конкатенуємо наші літери, але вже без пробілів, протягуємо і комірка K33 міститиме відповідь:
K4=СЦЕПИТЬ(K3;J4)
Для зручності помістимо цю відповідь в комірку G1.
Перед виконанням третьої частини завдання необхідно до комірок E1:E3 внести переклад поданого користувачем слова морзянкою з використанням трьох алфавітів: українського, російського та англійського відповідно. Аналогічно до комірок G1:G3 за допомогою формул повинні бути внесені результати перекладу морзянки з комірки B2 всіма трьома мовами.
Результат для конкретної обраної мови можна буде отримати за допомогою функції СМЕЩ (OFFSET):
C1=СМЕЩ(E1;A1;0)
C2=СМЕЩ(G1;A1;0)
Також його можна отримати за допомогою кількох вкладень функції ЕСЛИ (IF).