Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Условное форматирование дробной части (http://forum.oszone.net/showthread.php?t=275454)

Maestro 09-01-2014 12:39 2285392

Условное форматирование дробной части
 
Exel 2003
Не нашёл как можно сделать такое:

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

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

Спасибо

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

Iska 09-01-2014 13:20 2285414

А если не равна?

Код:

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 2285432

Цитата:

Цитата Iska
А если не равна? »

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

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

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

Iska 09-01-2014 14:08 2285438

Цитата:

Цитата Maestro
Если я правильно понимаю, это надо выделить необходимый диапазон ячеек и выполнить этот макрос для них, так? »

Совершенно верно.

Цитата:

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

Фокус не выйдет: тогда ранее заданные форматы не будут соответствовать новым значениям ячеек. Потому — было сделано так:
Код:

Else
    objRange.Font.ColorIndex = 10
    objRange.NumberFormat = "General"

Цитата:

Цитата Maestro
вроде работает, только получается и если дробная часть не нулевая, то тоже отсекает до 1 знака, а надо чтобы не трогало »

Не отсекает. Если у Вас отсекает — выкладывайте Ваш файл, укажите ячейку, посмотрим.

okshef 09-01-2014 20:30 2285648

Maestro, выделите диапазон, создайте правило для условного форматирования:
Код:

=(A1-ЦЕЛОЕ(A1))=0
и задавайте формат

Maestro 10-01-2014 11:12 2285920

Цитата:

Цитата Iska
Не отсекает. Если у Вас отсекает — выкладывайте Ваш файл, укажите ячейку, посмотрим. »

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

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

Iska 10-01-2014 11:56 2285944

Maestro, лучше воспользуйтесь советом коллеги okshef. Это работает.

Цитата:

Цитата Maestro
Вот http://clip2net.com/s/6yDA4d
файл: http://rghost.ru/51531181 »

Вот как выглядит у меня после исполнения макроса:


Если расширить столбцы, то виден ещё один знак:

Формат ячейки — «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 2286302

Вложений: 1
Maestro, а что вам в моем способе не нравится? Замените A1 на D9, и все получится

Iska 11-01-2014 04:02 2286529

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

okshef 11-01-2014 04:32 2286533

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

Iska 11-01-2014 05:30 2286542

Ничего страшного, главное, что сие работает ;). Я вот, увы, не сообразил, что это можно использовать.

Maestro 11-01-2014 11:14 2286615

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


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

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

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

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

Спасибо.


Время: 20:27.

Время: 20:27.
© OSzone.net 2001-