Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2010, 21:09   #1
SGA
Новичок
Джуниор
 
Регистрация: 07.05.2010
Сообщений: 5
По умолчанию Функции

Уважаемые программисты (люди)!!
Обратиться за помощью к вам меня побудила не разрешимая для моего сознания задача. Мне требуется преобразовать текст в числовое значение т.е. каждой букве русского алфавита присвоить значение
А=1, Б=2, В=3, ... З=9 а далее исчисление продолжется сначала т.е. И=1,
К=2, Л=3 и т.д. В итоге мне надо получить например слово "баг" = 214.
После получения числа из слова мне надо сложить цифру соответствующую каждой буквы между собой т.е. 2+1+4 (что бы в итоге если значение привести к 1 цифре: например если при сложении всех цифр соответствующих слову получается 15 мне надо сложить 1+5 чтобы получилась 1 цифра).
Так как я не знаю языков программирования я пытаюсь решить эту задачу с помощью программы ОpenOffice.org Calc.
Вопрос состоит в том какую(ие) доступные функции можно использовать что бы решить задачу.

Заранее спасибо всем кто откликнется на просьбу.
SGA вне форума Ответить с цитированием
Старый 07.05.2010, 22:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
я пытаюсь решить эту задачу с помощью программы ОpenOffice.org Calc.
А какое эта тема имеет отношение к Microsoft Office Excel?
Надо решить задачу при помощи формул?

Или макрос (пользовательская функция) для Microsoft Office Excel устроит?

PS: Макросом задача решается элементарно.

Цитата:
сначала т.е. И=1,
К=2, Л=3 и т.д.
А куда пропала буква Й?
EducatedFool вне форума Ответить с цитированием
Старый 07.05.2010, 23:22   #3
SGA
Новичок
Джуниор
 
Регистрация: 07.05.2010
Сообщений: 5
По умолчанию

Прошу прощения за невнимательность)), мне подойдет любой способ
но лучше формулой
SGA вне форума Ответить с цитированием
Старый 07.05.2010, 23:41   #4
SGA
Новичок
Джуниор
 
Регистрация: 07.05.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от SGA Посмотреть сообщение
Прошу прощения за невнимательность)), мне подойдет любой способ
но лучше формулой
Установил EXCEL
SGA вне форума Ответить с цитированием
Старый 07.05.2010, 23:58   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Посмотрите пример в файле:



Код:
  Ячейка: B2      Формула  (стиль A1):   =КодСлова(A2)
                  Формула  (стиль R1C1): =КодСлова(RC[-1])
Код пользовательской функции:
Код:
Option Compare Text

Function КодСлова(ByVal txt As String) As Long
    буквы = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
    цифры = "123456789123456789123456789123456"
    For i = 1 To Len(txt)
        pos = InStr(1, буквы, Mid(txt, i, 1))
        If pos > 0 Then КодСлова = КодСлова + Val(Mid(цифры, pos, 1))
    Next i
    While Len(CStr(КодСлова)) > 1
        For i = 1 To Len(CStr(КодСлова)): res = res + Val(Mid(КодСлова, i, 1)): Next i
        КодСлова = res: res = 0
    Wend
End Function
EducatedFool вне форума Ответить с цитированием
Старый 08.05.2010, 00:06   #6
SGA
Новичок
Джуниор
 
Регистрация: 07.05.2010
Сообщений: 5
По умолчанию

Благодарю!
попытюсь разобраться
SGA вне форума Ответить с цитированием
Старый 08.05.2010, 01:00   #7
SGA
Новичок
Джуниор
 
Регистрация: 07.05.2010
Сообщений: 5
По умолчанию

это превосходно!
SGA вне форума Ответить с цитированием
Старый 08.05.2010, 02:26   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение. решение формулой.
во второй колонке результат вычислений формулой, а в 3-й - функцией, которую написал EducatedFool.
Почему результат не совпал для фразы "Уважаемые программисты (люди)!!" потому что моя формула переводит в цифры пробелы, открывающиеся и закрывающиеся скобки, восклицательные знаки, а функция EducatedFool - только русские буквы, что, видимо правильно, потому что больше соответствует изначально описанным требованиям.
И еще, чтобы увеличить совпадения между результатами вычислений двумя функциями, я в коде изменил строку
буквы = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
на
буквы = "абвгдежзийклмнопрстуфхцчшщъыьэ юяё"
В общем, если использовать в исследуемой строке только буквы русского алфавита (кроме "ё") - то результаты расчетов должны полностью совпадать.
Вложения
Тип файла: rar книга321.rar (8.8 Кб, 17 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 08.05.2010 в 02:30.
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
функции Dimarik Общие вопросы C/C++ 23 12.05.2009 20:20
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Функции Pedro Общие вопросы Delphi 5 08.11.2007 15:39