2010-11-10 2 views
26

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

**File No** 
1122 
1122 
1144 
1155 
1155 
1155 
1166 

Я хотел бы первые две строки (где значение файла # является 1 122), чтобы быть заштрихованы в цвете 1, следующей строке (где значение file # is 1144), чтобы быть заштрихованным в цвете 2, следующие 3 строки (где значение файла # равно 1155) должны быть заштрихованным цветом 1, следующая строка (где значение файла # равно 1166) будет затененной цвет 2

ответ

4

Если вы используете MS Excel 2007, вы можете использовать conditional formatting на вкладке Home, как показано на скриншоте ниже. Вы можете использовать опцию color scales по умолчанию, как я сделал здесь, или вы можете продолжить и создать new rule на основе вашего набора данных. Conditional Formatting

4

Conditional Formatting.

В простейшей форме вы говорите «для этой ячейки, если это значение X, тогда примените формат foo». Однако, если вы используете метод «formula», вы можете выбрать целую строку, ввести формулу и соответствующий формат, а затем использовать копию и вставить (только форматы) для остальной части таблицы.

Вы ограничены только тремя правилами в Excel 2003 или старше, поэтому вам может понадобиться определить шаблон для цветов, а не использовать необработанные значения. Нечто подобное должно работать, хотя:

alt text

+0

Несмотря на то, что это правильно отвечает на вопрос как сформулированный, я подозреваю, что первоначальный искатель пытался добиться чередующихся цветных полос на основе изменения данных, иногда называемых полосами зебры. Для этого я думаю, что ответ Майка Бэина лучше. –

+0

Нет, он буквально не спрашивал об этом. Буквально он просил, чтобы цвет строк основывался на значении в ячейке. Я предлагаю вам снова прочитать этот вопрос. –

45

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

Допустим, что ваш новый столбец столбец D, и значение, которое вы хотите посмотреть на это в колонке Исходным в строке 2.

В ячейке D2 положить: = MOD (IF (СТРОКА() = 2, 0, IF (A2 = A1, D1, D1 + 1)), 2)

Заполните это, насколько вам нужно (тогда скройте столбец, если хотите).

Теперь выделите весь набор данных - этот выбор ячеек будет тем, который затенен на следующем шаге.

С вкладки Главной выберите Условное форматирование, затем Нового правила.

Выбрать Используйте формулу, чтобы определить, какие ячейки следует форматировать.

В «значений формата, где эта формула верна» положить = $ D2 = 1

Нажмите кнопку Формат, нажмите Заполните вкладку, а затем выберите цвет, который вы хотите, чтобы затенить с.

Примеры здесь:

+0

Я думаю, что это ответ, который должен быть отмечен как правильный, так как OP сказал, что им нужны строки, отличающиеся, хотя их пример выглядит так, как будто это были столбцы – JsonStatham

+2

Это превосходно. В Excel для Mac версии 15.27 мне нужно выбрать Style = Classic после выбора New Rule .... – battey

1

я нашел простое решение для обвязки по содержанию в Pearson Software Consulting: Допустим, заголовок от A1 до B1, таблица данных от A2 до B5 контрольная ячейка находится в колонке A

  1. Сделать новую колонку, C
  2. Сначала первый ряд, чтобы цвет сделать формулу = TRUE в ячейке C2
  3. Во второй строке сделать формулу = IF (А3 = А2, С2, НЕ (С2))
  4. Заполните колонку вниз в последнюю строку
  5. Выберите диапазон данных
  6. Выберите условное форматирование, выберите Использовать формулу ... и положить = $ C2 как формула
0

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

  • Сделать новый столбец
  • Предположит, первую строку данных в строке 2 (строка 1 является заголовок), положить 1 в A2
  • Предполагая, что ваш файл Нет находится в столбце В, во втором строка (в данном случае A3) делает формулу =IF(B3=B2,A2,A2+1)
  • Заливка/копипаст ячейки A3 вниз колонны до последней строки (будьте осторожны, чтобы не копировать A2 случайно, что заполнит все ячейки с 1)
  • Выберите диапазон данных
  • В Home ленты выберите Условное форматирование ->Новое правило
  • Выберите Использовать формулу для определения того, какие клетки форматировать
  • В ячейке формулы, положить =MOD($A1, 2)=1 как формула
  • Нажмите Формат, выберите Заполнить tab
  • Выберите цвет фона, который вы хотите, затем нажмите OK
  • Нажмите OK

enter image description here

4

Это один озадачил меня в течение веков. Не нравится идея создания дополнительной (неуместной) строки/столбца только для вычисления форматирования. Наконец пришел со следующим правилом:

=INDIRECT("A"&ROW())<>INDIRECT("A"&(ROW()-1)) 

Это создает ссылку A2<>A1 для строки 2, A3<>A2 для строки 3 и т.д. Отрегулируйте букву «A», чтобы быть столбец, который вы хотите сравнить

+1

Кажется, это только подчеркивает изменение значения и не чередует цвета между группами. –

0

вы могли бы использовать этот формуляр, чтобы сделать работу -> получить CellValue для конкретной строки, набрав: = косвенный ("$ A & Cell()) в зависимости от того, какой столбец вы должны проверить, вы должны изменить $ A

для примера -> вы можете использовать настраиваемую функцию VBA в фоновом режиме:

Public Function IstDatum (Zelle) As Boolean IstDatum = False Если IsDate (Целле) Тогда IstDatum = True End Function

Мне нужно, чтобы проверить на дату вхождения в колонке А:

= IstDatum (INDIREKT ("$ A" & Zeile()))

have a look at the picture:

1

в MS Excel, первый сохранить книгу как Macro Enabled файл затем перейдите на вкладку Developper и нажмите на Visual Basic. Скопируйте и вставьте этот код в объекты Excel «ThisWorkbook». Замените 2 значения G = и C = на число столбцов, содержащих ссылки, на которые ссылаются.

В вашем случае, если номер столбца с именем «File No» является первый столбец (а именно колонка 1), замените G=6 на G=1 и C=6 по C-1. Наконец нажмите макрос, выберите и запустите его. Вуаля! Работает как шарм.

Sub color() 
    Dim g As Long 
    Dim c As Integer 
    Dim colorIt As Boolean 

    g = 6 
    c = 6 
    colorIt = True 

    Do While Cells(g, c) <> "" 
     test_value = Cells(g, c) 
     Do While Cells(g, c) = test_value 
      If colorIt Then 
       Cells(g, c).EntireRow.Select 
       Selection.Interior.ColorIndex = 15 
      Else 
       Cells(g, c).EntireRow.Select 
       Selection.Interior.ColorIndex = x1None 
      End If 
      g = g + 1 
     Loop 
     colorIt = Not (colorIt) 
    Loop 
End Sub 
1

Как по крайней мере 1 другой вклад здесь, я никогда не любил того, чтобы добавить дополнительный столбец «помощник», который может создать некоторые неприятности в различных ситуациях. Наконец я нашел решение. Есть несколько разных формул, которые вы можете использовать в зависимости от потребностей и того, что находится в столбце, есть ли пустые значения и т. Д. Для большинства моих потребностей я приземлился на использование следующей простой формулы для формулы CF:

= MOD (Fixed (SUMPRODUCT (1/СЧЕТЕСЛИ (CurrentRange, CurrentRange))), 2) = 0

создать именованный диапазон называется "CurrentRange", используя следующую формулу: где [лист] является лист, на котором ваши данные, [DC] - столбец со значениями, по которым вы хотите привязать свои данные, и [FR] - это первая строка, в которой находятся данные:

= [Sheet]! $ [DC] $ [ FR]: INDIRECT ("$ [DC] $" & ROW())

Ссылка на лист и ссылка на столбец будут основаны на столбце, который имеет значения, которые вы оцениваете. ПРИМЕЧАНИЕ. Вы должны использовать именованный диапазон в формуле, потому что это вызовет ошибку, если вы попытаетесь использовать ссылки диапазона непосредственно в формуле правила CF.

В принципе, формула работает, оценивая для каждой строки количество всех уникальных значений для этой строки и выше в верхней части диапазона. Это значение для каждой строки по существу обеспечивает восходящий уникальный идентификатор для каждого нового уникального значения. Затем он использует это значение вместо функции Row() в стандартной формуле CF MOD для простых чередующихся цветов строк (т. Е. = Mod (Row(), 2) = 0).

См. Следующий пример, который разбивает формулу, чтобы показать полученные компоненты в столбцах, чтобы показать, что она делает за кулисами.

Example Data

В этом примере CurrentRange именованный диапазон определяется как:

= Лист1 $ A $ 2: ДВССЫЛ ("$ A $" & ROW())

Уникальный идентификатор столбец содержит следующую часть формулы формулы CF:

= Фиксированный (SUMPRODUCT (1/СЧЕТЕСЛИ (CurrentRange, CurrentRange)))

Вы можете видеть, что, начиная со строки 3, количество уникальных значений из этой строки и выше в столбце «Цвет» равно 2, и оно остается 2 в каждой следующей строке до строки 6, когда формула, наконец, встречает третье уникальное значение ,

В столбце Группа используется остаток формулы, относящийся к результату в столбце B = MOD (B2,2), чтобы показать, как он доставит вас к 1s и 0s, которые затем могут использоваться для CF.

В конце концов, дело в том, что вам не нужны дополнительные столбцы. Вся формула может использоваться в правиле CF + именованный диапазон. Для меня это означает, что я могу придерживаться базовой формулы в шаблоне, который я использую для удаления данных, и не должен беспокоиться о том, чтобы возиться с дополнительным столбцом после того, как данные были удалены. Он просто работает по умолчанию. Кроме того, если вам нужно учитывать пробелы или другие сложности или большие наборы данных, вы можете использовать другие более сложные формулы, используя функции частоты и соответствия.

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

0

Ненавижу использовать эти формулы в ячейке и заполнить новый столбец, и я, наконец, узнал достаточно, чтобы сделать собственный макрос VBA для достижения этого эффекта.

Это не может быть все, что логически отличается от другого ответа, но я думаю, что код выглядит чертовски много лучше:

Dim Switch As Boolean 
For Each Cell In Range("B2:B" & ActiveSheet.UsedRange.Rows.Count) 
    If Not Cell.Value = Cell.Offset(-1, 0).Value Then Switch = Not (Switch) 
    If Switch Then Range("A" & Cell.Row & ":" & Chr(ActiveSheet.UsedRange.Columns.Count + 64) & Cell.Row).Interior.Pattern = xlNone 
    If Not Switch Then Range("A" & Cell.Row & ":" & Chr(ActiveSheet.UsedRange.Columns.Count + 64) & Cell.Row).Interior.Color = 14869218 
Next 

Мой код здесь происходит на колонке B, она принимает строку заголовка поэтому он начинается с 2, и я использую метод Chr (x + 64) для получения букв столбца (который не будет работать после столбца Z, я еще не нашел достаточно простого метода для преодоления этого).

Во-первых, переменная boolean будет чередоваться при изменении значения новой (использует Offset для проверки ячейки выше), и для каждого прохода строка проверяется как на True, так и на False и соответственно ее цвета.

Смежные вопросы