PDA

Показать полную графическую версию : Условное форматирование дробной части


Maestro
09-01-2014, 12:39
Exel 2003
Не нашёл как можно сделать такое:

Если дробная часть числа равна нулю, то отображать только скажем целое или 1 знак поле запятой. Т.е. получается условное форматирование, то там нет таких вариантов

Или я слишком многого хочу?

Спасибо

P.S. Может на визуал бейсике можно как-то реализовать?

Iska
09-01-2014, 13:20
А если не равна?

Option Explicit

Sub Sample()
Dim objRange As Range

For Each objRange In Selection
If Int(objRange.Value) = objRange.Value Then
objRange.Font.ColorIndex = 3
objRange.NumberFormat = "#,##0.0"
Else
objRange.Font.ColorIndex = 10
objRange.NumberFormat = "General"
End If
Next objRange
End Sub

Maestro
09-01-2014, 13:56
А если не равна? »

тогда ничего не делать.

А как такой макрос применительно ко всей таблице сделать?

Если я правильно понимаю, это надо выделить необходимый диапазон ячеек и выполнить этот макрос для них, так? - вроде работает, только получается и если дробная часть не нулевая, то тоже отсекает до 1 знака, а надо чтобы не трогало

Iska
09-01-2014, 14:08
Если я правильно понимаю, это надо выделить необходимый диапазон ячеек и выполнить этот макрос для них, так? »
Совершенно верно.

тогда ничего не делать. »
Фокус не выйдет: тогда ранее заданные форматы не будут соответствовать новым значениям ячеек. Потому — было сделано так:
Else
objRange.Font.ColorIndex = 10
objRange.NumberFormat = "General"

вроде работает, только получается и если дробная часть не нулевая, то тоже отсекает до 1 знака, а надо чтобы не трогало »
Не отсекает. Если у Вас отсекает — выкладывайте Ваш файл, укажите ячейку, посмотрим.

okshef
09-01-2014, 20:30
Maestro, выделите диапазон, создайте правило для условного форматирования:
=(A1-ЦЕЛОЕ(A1))=0 и задавайте формат

Maestro
10-01-2014, 11:12
Не отсекает. Если у Вас отсекает — выкладывайте Ваш файл, укажите ячейку, посмотрим. »

Вот http://clip2net.com/s/6yDA4d

файл: http://rghost.ru/51531181

Iska
10-01-2014, 11:56
Maestro, лучше воспользуйтесь советом (http://forum.oszone.net/post-2285648.html#post2285648) коллеги okshef. Это работает.

Вот http://clip2net.com/s/6yDA4d
файл: http://rghost.ru/51531181 »
Вот как выглядит у меня после исполнения макроса:
http://imageshack.com/a/img585/1521/1xoj.png

Если расширить столбцы, то виден ещё один знак:
http://imageshack.com/a/img5/4926/vub5.png
Формат ячейки — «General» («Общий»), как и указано тут:
If Int(objRange.Value) = objRange.Value Then
objRange.Font.ColorIndex = 3
objRange.NumberFormat = "#,##0.0"
Else
objRange.Font.ColorIndex = 10
objRange.NumberFormat = "General"
End If

Что не так?

okshef
10-01-2014, 20:25
Maestro, а что вам в моем способе не нравится? Замените A1 на D9, и все получится

Iska
11-01-2014, 04:02
okshef, всё нормально в предложенном Вами способе. Разве что сформулировано несколько отлично — «правило» вместо наличествующих «Условие» → «Формула». Меня, скажем, это и ввело поначалу в заблуждение, и я было решил (как можно судить по удалённому сообщению), что сие доступно только в более новых версиях Excel.

okshef
11-01-2014, 04:32
Iska, я, конечно же, имел в виду "правило условного форматирования" (в 2007 и выше есть пункт "Управление правилами", а то, что речь идет о 2000/XP/2003, забыл)

Iska
11-01-2014, 05:30
Ничего страшного, главное, что сие работает ;). Я вот, увы, не сообразил, что это можно использовать.

Maestro
11-01-2014, 11:14
Всем спасибо огромное за помощь. Хорошо когда есть добрые и опытные люди, готовые помочь советом. Я очень признателен.

Я просто помогаю супруге по работе. Хочу что бы все отчёты можно было сделать одной или двумя кнопками и не париться тупо с калькулятором - Exel сильная штука.

Вот для полного счастья если бы ТАКОЕ можно было реализовать:

1. Отформатировать ячейки в нужном диапазоне с заданной точностью дробной части
2. Проанализировать все ячейки по столбцам в опр. диапазоне на предмет незначащих нулей в дробной части и отформатировать ячейки по последней значащей цифре в дробной части
3. Выявить ячейку(ячейки) с самым большим количеством значащих цифр в дробной части в обрабатываемом столбце
4. Отформатировать данный столбец по максимальной ширине найденной ячейки (ячеек), т.е. чтобы при печати на лист помещалось и руками каждый раз не надо было ширину столбцов подгонять

Если для этого надо переходить на более новую версию Офиса - нет проблем. 2007 не очень мне что-то, а вот 2010 запросто. Тогда надо будет переносить с другую ветку - перенесём. Если в 2003 получится - вообще здорово

Спасибо.




© OSzone.net 2001-2012