Excel:根据条目自动线条颜色

Excel: automatic line color according to entry

我有一个很大的 Excel 文件,我用它从多个来源收集有关某些事件的数据(我们称它们为 Event1、Event2、Event3...)。由于多个来源可以提供有关同一事件的信息,对于引用同一事件的每个来源,我插入一个新行和一个新 ID(下图提供了一个示例:我有多个来源描述 Event1,因此我使用不同的 ID 对它们进行排序, 即 1.1, 1.2, ...)

为了方便这些数据的可视化,我想用相同的颜色为引用同一事件的所有条目的背景着色,如下图所示。例如,第一个单元格包含整数 1 的所有行都应为灰色,所有包含整数 2 的行应为粉红色,依此类推。 但是,我没有找到任何自动执行此操作的函数或命令。在 Excel 中是否有自动执行此操作的方法?

您应该可以使用此方法进行第 3 步:http://www.dummies.com/software/microsoft-office/excel/highlight-excel-cells-based-on-the-value-of-another-cell/

在第 3 步中,您需要输入特定于您需要的公式。我没有测试过这些,但两者都应该有效: =SEARCH("1", A1)>1(其中 A1 是对 Entry ID 列中单元格的单元格引用) - 您在这里所说的是 find/match 以值 [=13] 开头的任何单元格=] =IF(LEFT(A1,1)="1")(其中 A1 是对 Entry ID 列中单元格的单元格引用) - 你在这里说的是找到单元格 A1 中最左边的 1 个字符,如果那就是 1 那么它就匹配了。

参考文献:
https://www.ablebits.com/office-addins-blog/2014/06/10/excel-conditional-formatting-formulas/
If Cell Starts with Text String... Formula

这在一定程度上取决于事件的数量以及您是否愿意为每个事件自己定义颜色。如果事件数量较少,您可以考虑像 Jorg 建议的那样分别为每个事件添加条件格式。这将使您能够自己设置配色方案。如果事件较多,可以考虑增加一个辅助列,公式如下=VALUE(LEFT(A1;FIND(".";A1)-1))。基于此列,您可以使用色标为行添加条件格式。此方法的缺点是 Excel 会为您确定颜色。或者,您可以在 VBA 中按所需顺序定义颜色列表,遍历每个规范化事件 ID,并分别设置背景颜色。

您还可以使用宏来检查 A 列中的值,并在条目 ID 更改为下一个数字时分配新颜色:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row > 1 Then
    If IsNumeric(Target) Then
        If Target.Column = 1 Then
            If Application.WorksheetFunction.RoundDown(Target.Value, 0) = WorksheetFunction.RoundDown(Cells(Target.Row - 1, 1).Value, 0) + 1 Then

                    r = WorksheetFunction.RandBetween(0, 255)
                    g = WorksheetFunction.RandBetween(0, 255)
                    b = WorksheetFunction.RandBetween(0, 255)
                    Range(Cells(Target.Row, 1), Cells(Target.Row, 3)).Interior.Color = RGB(r, g, b)
            Else
                    Range(Cells(Target.Row - 1, 1), Cells(Target.Row - 1, 3)).Copy
                    Range(Cells(Target.Row, 1), Cells(Target.Row, 3)).PasteSpecial (xlPasteFormats)
                    Application.CutCopyMode = False
            End If
        End If
    End If
End If

End Sub