|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||||||
Форматирование чисел по условию23.06.2011, 15:49. Показов 10095. Ответов 19
Метки нет (Все метки)
Необходимый формат чисел -
если больше 999, то, например: 1,200.00 если меньше, то, например: 500.00 В коде три условия для разных ячеек. Форматы копируются из других ячеек. Первое условие работает, остальные нет. Прошу помощи. Вот код:
Заранее благодарю! прикрепил файл. это черновик...
0
|
||||||
| 23.06.2011, 15:49 | |
|
Ответы с готовыми решениями:
19
Форматирование текста в полужирный шрифт по условию Форматирование множества чисел по образцу |
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
| 23.06.2011, 17:10 | |
|
Уверен, формат "#\.###.00" решит все ваши проблемы без всяких макросов.
Только учтите, что если число будет 10^6 и больше, то он будет писать "1000.000.00" вместо "1.000.000.00"
0
|
|
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 23.06.2011, 17:49 [ТС] | ||
|
Если бы исправить ошибку в моем коде (или другой), всё бы получилось. Загвоздка в том, что первое условие выполняется, а второе и третье - нет.
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
||
| 23.06.2011, 18:38 | ||
|
Если вам принципиально важно, чтобы разряды числа разделялись запятой, измените в "Панель управления" -> "Язык и региональные стандарты" -> "Настройка" -> "Разделитель групп разрядов:" пробел на запятую и пользуйтесь предусмотренным в Excel разделителем. Я, если честно, не могу понять, что происходит у вас в книге. Смотрите, что у вас написано в коде: При изменении ячейки M2, если M2<1000, скопировать формат из ячейки P20 в ячейку M26 При изменении ячейки P22, если P22<1000, скопировать формат из ячейки P22 в ячейку M28 При изменении ячейки Q2, если Q2<1000, скопировать формат из ячейки P24 в ячейку M30 Суть происходящего от меня ускользает.
0
|
||
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 23.06.2011, 18:54 [ТС] | ||
|
Да, согласен, в книге намудрено. Вернее бардак, но всё работает, кроме этого кода. Насчет кода. Ячейки М26,М28,М30 - исходные, по завершении ввода данных выводятся в Word путем связей. Ячейки Р20,Р22,Р24 - нужный формат для чисел. М2,Р22,Q2 - ячейки для ввода данных. То есть, есть ячейки, из которых я беру нужный формат и вставляю в исходные.
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
| 23.06.2011, 19:11 | |
|
1) Измените формат ячеек М26, М28, М30 на "Общий"
2) Удалите процедуру "Worksheet_Change" или измените ее название, чтобы она не выполнялась 3) Введите в ячейку M26 формулу "=ЕСЛИ($M$2<1000;ТЕКСТ($M$2;"0.00");ТЕКС Т($M$2;"0,000.00"))" 4) Введите в ячейку М28 формулу "=ЕСЛИ(M2*C5<1000;ТЕКСТ(M2*C5;"0.00");ТЕ КСТ(M2*C5;"0,000.00"))" 5) Введите в ячейку М30 формулу "=ЕСЛИ(Q2<1000;ТЕКСТ(Q2;"0.00");ТЕКСТ(Q2 ;"0,000.00"))" Работает?
0
|
|
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
|
| 23.06.2011, 19:30 [ТС] | |
|
0
|
|
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|||||||
| 23.06.2011, 19:51 | |||||||
|
Да уж Сейчас напишу решение, минутку. Добавлено через 11 минут Копируете код в любой Module в вашем проекте VBA:
Ячейка, на которую вы ссылаетесь, должна иметь формат с разделителями разрядов.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 23.06.2011, 20:06 [ТС] | ||
|
Работает на УРА! ![]() P.S. А сколько я с этим форматом возился - не поверите, даже и не буду говорить)
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
| 23.06.2011, 20:09 | |
|
0
|
|
|
|
|
| 24.06.2011, 05:00 | |
|
Тема классная. Цитирование ужасное (когда целиком) — мешает читать.
0
|
|
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
|
| 24.06.2011, 12:15 [ТС] | |
|
Gibboustooth, нужна небольшая корректировка формата. Проблема с датами.
0
|
|
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|||||||
| 24.06.2011, 12:46 | |||||||
|
Code
У нас разные эксели и разные разделители, так что не могу поручиться за работоспобность того или иного кода. Одна проблема - разделитель разрядов в формате "Standard" не копируется правильно на этот форум. Вам надо сделать следующее: 1) Скопировать функцию в модуль. 2) Поставить BreakPoint на предпоследнюю строку функции (которая MakeFormat=<...>) 3) На листе Эксель нажать F9. На брейкпоинте должен появиться желтый курсор выполнения макроса 4) Нажать правой кнопкой на FormatValue и нажать "AddWatch". Появиться окно Watches (если его еще нет). 5) Скопировать в окне Watches из столбца Value разделитель разрядов переменной FormatValue (если разделитель разрядов не появляется, нажмите F5, чтобы он перешел к другому числу для расчета, до тех пор, пока не появится разделитель разрядов. 6) Вставить разделитель разрядов в качестве значения константы PartSep (то, где сейчас стоит "*")
1
|
|||||||
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 24.06.2011, 13:57 [ТС] | ||
|
На каком-то этапе "тыканья" мне выдало окно для запуска макроса, и там макроса не было. У меня Excel 2003
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
||
| 24.06.2011, 14:31 | ||
|
Можете просто зайти в ячейку с функцией и выйти из нее - он должен персчитать значение и зайти в VBA.
0
|
||
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 24.06.2011, 15:08 [ТС] | ||
|
Сервис - параметры- пересчет или вычислить - тот же результат. Добавлено через 14 минут Получается только при изменении числа в ячейке, на которую ссылается MakeFormat, но в VBA показывает типа FormatValue = "5 000,00"
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
| 24.06.2011, 15:12 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
||
| 24.06.2011, 15:21 [ТС] | ||
|
Просто пробел нельзя поставить? Буду изучать) Спасибо БОЛЬШОЕ !
0
|
||
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|||
| 24.06.2011, 15:26 | |||
![]() Прошлое решение было плохо тем, что оно брало не значение поля, а отображаемый текст. А когда поле меньше числа, отображаемый текст выглядит как "####", что приводит к неправильной работе формулы. Книжки по VBA читать полезно, но необязательно. Форумы + help excel'a + свой здравый смысл способны заменить большую часть того, что там написано.
0
|
|||
|
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 10
|
|
| 24.06.2011, 15:30 [ТС] | |
|
0
|
|
| 24.06.2011, 15:30 | |
|
Помогаю со студенческими работами здесь
20
Форматирование даты по условию Форматирование текста по условию
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|