Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Перевод чисел в текст прописью

Ответить
Настройки темы
VBA - Перевод чисел в текст прописью

Новый участник


Сообщения: 14
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте, У меня возникла проблемка. Необходимо в Microsoft Excel
написать программку, чтобы она переводила введенное число в текст и
записала его прописью, например:
введено "12" - программа записывает в другой ячейке - "двенадцать".
Я конечно могу, в Microsoft Excel написать такую програмку, но не
хочется велосипед изобретать, может что-то подобное уже есть? Функция
какая, надстройка, или где-то что-то кто-то видел, подскажите.

Отправлено: 18:46, 14-12-2007

 

Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Есть пример подобной функции на C++, думаю перевести не составит труда.

Цитата:
//summa.h
AnsiString triada(AnsiString in, int tn)
{
if (in == " ") return "";
if (in == "000") return "";
AnsiString out = "";
AnsiString sotni[9] =
{"сто", "двести", "триста", "четыреста", "пятьсот",
"шестьсот", "семьсот", "восемьсот", "девятьсот"};
AnsiString dubl[10] =
{"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать",
"пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"};
AnsiString des[8] =
{"двадцать", "тридцать", "сорок", "пятьдесят",
"шестьдесят", "семьдясят", "восемьдясят", "девяносто"};
AnsiString ed[9] = {"один", "два", "три", "четыре", "пять", "шесть","семь", "восемь", "девять"};
AnsiString edj[9] = {"одна", "две", "три", "четыре", "пять", "шесть","семь", "восемь", "девять"};
AnsiString ind[5] = {"", " тысяч", " миллион", " миллиард", " триллион"};
AnsiString post;
if (in[1] != ' ') if (in[1] != '0')
{ out = out + sotni[StrToInt(in[1])-1]; }
if (in[2] == '1')
{ out = out + " " + dubl[StrToInt(in[3])]; }
if (in[2] != '1') if (in[2] != ' ') if (in[2] != '0')
{ out = out + " " + des[StrToInt(in[2])-2]; }
if (in[3] != '0') if (in[2] != '1')
{
if (tn == 1)
out = out + " " + edj[StrToInt(in[3])-1];
if (tn != 1)
out = out + " " + ed[StrToInt(in[3])-1];
}
if (tn>0) if (in[2] != '1')
{
if (tn==1) switch (in[3])
{
case '1': post = ind[tn] + "а"; break;
case '2': post = ind[tn] + "и"; break;
case '3': post = ind[tn] + "и"; break;
case '4': post = ind[tn] + "и"; break;
default : post = ind[tn] + ""; break;
}
if ((tn==2)||(tn==3)||(tn==4)) switch (in[3])
{
case '1': post = ind[tn] + ""; break;
case '2': post = ind[tn] + "а"; break;
case '3': post = ind[tn] + "а"; break;
case '4': post = ind[tn] + "а"; break;
default : post = ind[tn] + "ов"; break;
}
}
else
{
switch (tn)
{
case 1 : post = ind[tn]; break;
default : post = ind[tn] + "ов"; break;
}
}
out = out + post;
return out;
}
AnsiString summa(AnsiString in)
{
AnsiString out;
AnsiString trs[5];
AnsiString tro[5];
AnsiString buf;
int n,s;
div_t dr;

while (in.Length() < 15)
{
in = " " + in;
}
for (n=0;n<5;n++) trs[n] = in;
trs[0] = trs[0].Delete(1,in.Length()-3);
trs[1] = trs[1].Delete(1,in.Length()-6).Delete(4,4);
trs[2] = trs[2].Delete(1,in.Length()-9).Delete(4,6);
trs[3] = trs[3].Delete(1,in.Length()-12).Delete(4,9);
trs[4] = trs[4].Delete(1,in.Length()-15).Delete(4,12);

for (n=0;n<5;n++)
{
tro[n] = triada(trs[n],n);
}
out = " "+tro[4]+" "+tro[3]+" "+tro[2]+" "+tro[1]+" "+tro[0]+" ";
out = out.Trim();
return out;
}
//--------------------------------------------------------------------------------------
// / summa.h

Отправлено: 20:23, 14-12-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 369
Благодарности: 49

Профиль | Отправить PM | Цитировать


через ASCII- код или CHR - выясни как кодируются цифры от "0" и до твоих реальных чисел. через присвоение определи для каждой комбинации сканкодов - словесное соответствие.

Отправлено: 16:00, 22-12-2007 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Перевод чисел в текст прописью

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Последовательность чисел denver-312 Программирование и базы данных 7 02-01-2008 20:54
Перевод из голоса в текст v125147 Хочу все знать 6 14-03-2007 16:38
Генератор случайных чисел Murrey Хочу все знать 3 22-08-2006 13:00
сортировка чисел slaine Вебмастеру 12 18-02-2006 20:17
Генерирование случайны чисел в С++ Belka007 Программирование и базы данных 12 23-11-2003 22:19




 
Переход