Страницы: 1
RSS
Макрос для замены цифр на текст в соответствии с алфавитом
 
Есть пронумерованный алфавитный ряд, нужно создать макрос для замены цифр на буквы: к примеру 4 6 16 2  - при переводе должно получится  г е р б.    
Спасибо!!!!
 
Макрос обязательно? В первую ячейку:  
=ИНДЕКС($A$1:$A$33;F3)
 
Стойкий шифр :-)
 
{quote}{login=vikttur}{date=15.11.2010 11:40}{thema=}{post}Макрос обязательно? В первую ячейку:  
=ИНДЕКС($A$1:$A$33;F3){/post}{/quote}  
 
ну если можно))) щас попробуем и так! спс!
 
{quote}{login=vikttur}{date=15.11.2010 11:40}{thema=}{post}Макрос обязательно? В первую ячейку:  
=ИНДЕКС($A$1:$A$33;F3){/post}{/quote}  
 
 
в ячейке М3 =ИНДЕКС($A$1:$A$33;M3)   почему показывает букву "Г"  ??
 
Можно без таблицы подстановок на листе. Меню Вставка-Символ, код символа "а" - 224.  
=СИМВОЛ(223+F3)  
Если F3=3, то формула выдаст "в" (СИМВОЛ(226))  
Внимательно, кодировка таблиц вашей и Excel отличаются.
 
{quote}{login=vikttur}{date=15.11.2010 11:50}{thema=}{post}Можно без таблицы подстановок на листе. Меню Вставка-Символ, код символа "а" - 224.  
=СИМВОЛ(223+F3)  
Если F3=3, то формула выдаст "в" (СИМВОЛ(226))  
Внимательно, кодировка таблиц вашей и Excel отличаются.{/post}{/quote}  
 
Ваша формула подходит, только как сделать пробел пробелом?
 
<в ячейке М3 =ИНДЕКС($A$1:$A$33;M3) почему показывает букву "Г" ??>  
Ячейка пустая, М3=0:  
=ИНДЕКС($A$1:$A$33;0) или =ИНДЕКС($A$1:$A$33;)  
В этом случае формула выдает не одно значение, а массив значений $A$1:$A$33. В этом легко убедиться, если выделить формулу в строке формул и нажать F9 (вычислить).
 
А кстати, интересно получается:  
=ИНДЕКС($A$3:$A$35;0)  
или  
=ИНДЕКС($A$3:$A$35;)  
работает так, как будто вторым аргументом является номер строки, из которой вызывается функция, относительно строки начала списка!
 
<..только как сделать пробел пробелом?>  
=ЕСЛИ(F3="";"";формула)
 
{quote}{login=vikttur}{date=15.11.2010 11:57}{thema=}{post}<..только как сделать пробел пробелом?>  
=ЕСЛИ(F3="";"";формула){/post}{/quote}  
то есть если у меня 10 слов, то на каждый пробел писать формулу?
 
{quote}{login=Казанский}{date=15.11.2010 11:56}{thema=}{post}А кстати, интересно получается:  
=ИНДЕКС($A$3:$A$35;0)  
или  
=ИНДЕКС($A$3:$A$35;)  
работает так, как будто вторым аргументом является номер строки, из которой вызывается функция, относительно строки начала списка!{/post}{/quote}  
Точно, не замечал раньше. У кого будут мысли по этому поводу?
 
{quote}{login=vikttur}{date=15.11.2010 11:57}{thema=}{post}<..только как сделать пробел пробелом?>  
=ЕСЛИ(F3="";"";формула){/post}{/quote}  
Формула общая, показанная Выше.
 
Ну вы красавцы! хлоп-хлоп и все работает! Спасибо Вам ребята!
 
можно так :)  
Здрасьте всем! :)
 
Привет. Автору должно понравиться :)  
Диана, почему не указываете тип переменных? Они все получают Variant и под них выделяется максимально возможный (для переменных) кусок памяти. Расточительно.
 
{quote}{login=vikttur}{date=16.11.2010 01:20}{thema=}{post}Привет. Автору должно понравиться :)  
Диана, почему не указываете тип переменных? Они все получают Variant и под них выделяется максимально возможный (для переменных) кусок памяти. Расточительно.{/post}{/quote}  
 
Пока еще не все типы получается правильно указывать ...
 
{quote}{login=Казанский}{date=15.11.2010 11:56}{thema=}{post}А кстати, интересно получается:  
=ИНДЕКС($A$3:$A$35;0)  
или  
=ИНДЕКС($A$3:$A$35;)  
работает так, как будто вторым аргументом является номер строки, из которой вызывается функция, относительно строки начала списка!{/post}{/quote}Потому, что в этом случае возвращается не одно значение, а массив А3:А35. Функция ИНДЕКС с аргументом строки или столбца "ноль" - по определению "массивная", она формула должна быть растянута на диапазон и взята в "массив".  
Более подробно - в справке.
 
{quote}{login=vikttur}{date=16.11.2010 01:20}{thema=}{post}Привет. Автору должно понравиться :)  
Диана, почему не указываете тип переменных? Они все получают Variant и под них выделяется максимально возможный (для переменных) кусок памяти. Расточительно.{/post}{/quote}Актуально для для Spectrum Z80 c 48 kB памяти. Для 4 гигов - не очень актуально. ИМХО, конечно ;),  
 
ЗЫ. Как то проверял - код без указания типов отрабатывает быстрее, чем с указанием (кстати, пример брал у Уокенбаха) .
 
Михаил, у меня сомнения: для определения типа тоже требуется некоторое время. А значит - быстрее быть не должно.
 
{quote}{login=Юрий М}{date=16.11.2010 02:18}{thema=}{post}Михаил, у меня сомнения: для определения типа тоже требуется некоторое время. А значит - быстрее быть не должно.{/post}{/quote}Да, счас специально нашел у Уокенбаха этот код и проверил  
Sub TimeTest()  
Dim x As Integer, у As Integer  
Dim A As Integer, b As Integer, c As Integer  
Dim i As Integer, j As Integer  
Dim StartTime As Date, EndTime As Date  
' Сохранение времени начала вычислений  
StartTime = Timer  
' Выполнение вычислений  
x = 0  
у = 0  
For i = 1 To 5000  
For j = 1 To 1000  
A = x + у + i  
b = у - x - i  
c = x - у - i  
Next j  
Next i  
' Получение времени окончания вычислений  
EndTime = Timer  
' Отображение общего времени в секундах  
MsgBox Format(EndTime - StartTime, "0.0")  
End Sub  
 
без объявления типов отрабатывает в три раза дольше - беру свои слова обратно.  
Очевидно, когда проверял первый раз - в чем-то ошибся.  
 
24246
 
Михаил <Потому, что в этом случае возвращается не одно значение, а массив А3:А35. Функция ИНДЕКС с аргументом строки или столбца "ноль" - по определению "массивная", она формула должна быть растянута на диапазон и взята в "массив".  
Более подробно - в справке>  
Об этом в посте 15.11.2010, 23:55.  
Вопрос в другом - почему "как будто вторым аргументом является номер строки, из которой вызывается функция, относительно строки начала списка!" - в разных строках выдает разные элементы массива, а не первый?
 
Потому, что формула введена как обычная, и возвращает то значение массива, которое находится в этой же строке (или в этом же столбце, если массив - строка).    
Так работают все формулы, которые должны возвращать массивы значений, но введены как обычные.
 
=ЕСЛИ(ЕЧИСЛО($B$1:$B$33);$A$1:$A$33)  
Погонял по строкам. Действительно. Раньше не замечал и считал, что формула массива, введенная как обычная, показывает первое значение массива.  
Можно только догадываться, почему так, но это вопрос уже к разработчикам.
Страницы: 1
Читают тему
Наверх