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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.12.2006, 12:28   #1
ВЯЧ
Новичок
Джуниор
 
Регистрация: 04.12.2006
Сообщений: 1
По умолчанию Как произвести замену всех двузначных чисел на "00число которое заменено"

Такая вот задача непростая. Есть предположим ряд 22, 30, 48, 1, 354, 199. Необходимо, чтобы перед всеми двузначными числами в данном ряду подставились 2 нуля. То есть нужно преобразовать ряд в следующий: 0022,0030, 0048, 1, 354, 199.
Вручную это делать сложно когда в ряду несколько тысяч чисел.
Очень большая просьба помочь если кто знает как сделать такую штуку!!!

З.Ы. Возможно это можно сделать через: Правка=>Заменить, но как там тогда прописать в полях "найти" и "заменить" алгоритм замены не на какое то число, а конкретно на 00 и дальше именно то число, которое было заменено.

Заранее спасибо!
ВЯЧ вне форума
Старый 05.12.2006, 12:50   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

В принципе решить поставленную задачу можно, но здесь есть один нюанс ... Дело в том, что MS Excel не позволяет вводить лидирующие нули для числовых значений, поэтому, для того чтобы получить 0022 необходимо, либо ввести '0022 либо установить текстовый формат ячейки. Оба варианта приведут к тому, что подобные данные будут восприниматься как текст, т.е. Вы получите список, в котором будут наличествовать как числовые, так и текстовые значения, что не есть хорошо.
Поэтому, есть предложение : просто установить формат ячейки, при котором числовое значение 22 будет отображаться на экране как 0022
pashulka вне форума
Старый 05.12.2006, 21:33   #3
infinitiv
Пользователь
 
Регистрация: 05.12.2006
Сообщений: 23
По умолчанию

Формула:

=ЕСЛИ(ДЛСТР(A1)=2;ТЕКСТ(A1;"0000"); ТЕКСТ(A1;"0"))

проверяет количество цифр в числе A1, если оно равно двум, то формат текста "00число", иначе формат текста "число"
infinitiv вне форума
Старый 05.12.2006, 23:02   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Формула =ДЛСТР(A1)=2 определяет не количество цифр в числе, а количество символов в ячейке "A1", т.е. если ячейка содержит два символа, например ВЧ, то формула возвратит значение ИСТИНА. Впрочем, даже если предположить, что все ячейки содержат только числовые значения, то и в этом случае вышеопубликованная формула может возвратить некорректный результат, ибо число -5 также содержит всего два символа.
К тому же, вышеопубликованная формула возвращает текст, что не есть хорошо. Поэтому, в большинстве случаев, установка нужного формата (см. предыдущий пост) есть более правильный путь, ибо позволит в дальнейшем работать с числовыми данными, без дополнительных телодвижений и риска получить некорректный результат.
pashulka вне форума
Старый 05.12.2006, 23:38   #5
infinitiv
Пользователь
 
Регистрация: 05.12.2006
Сообщений: 23
По умолчанию

Согласен, однако формат (например, Табельный номер из Дополнительных или Пользовательский формат) изменит ВСЕ числа, а не только двузначные. Требовалось:
Цитата:
0022,0030, 0048, 1, 354, 199
Я использовал такую формулу, поскольку в задании нет текстовых значений, все числа положительные и результат не обязан быть числовым.
infinitiv вне форума
Старый 06.12.2006, 01:02   #6
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Совершенно очевидно, что я предлагал изменить формат только у двухзначных числовых значений. Что касается задания, то там говорится о нескольких тысячах чисел, поэтому полностью исключать наличие отрицательных значений, на мой взгляд, нельзя. Впрочем, если в списке действительно наличествуют только числа аналогичные представленным и автора вопроса устраивает получение текста, то можно обойтись и без использования стандартной функции рабочего листа =ТЕКСТ() (хотя это и непринципиально)

=ЕСЛИ(ДЛСТР(A1)=2;"00"&A1;""&A1)
pashulka вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Помогите!Срочно! "Составьте программу получения в порядке убывания всех делителей данного числа" koston Паскаль, Turbo Pascal, PascalABC.NET 2 26.03.2008 12:34
Одна "шапка" на всех листах Noor Microsoft Office Excel 2 30.07.2007 15:39