【问题标题】:How can I extract all the cell values (as well as their cell IDs) that have a specific color?如何提取具有特定颜色的所有单元格值(以及它们的单元格 ID)?
【发布时间】:2019-09-08 23:55:34
【问题描述】:

我有一个看起来像 this 的数据集。

我想创建另一个只有两列的数据集:

(1) 所有红色单元格的值/文本 (2) 与每个值/文本关联的原始单元格ID

基本上,它应该看起来像this

我假设有一种简单的方法可以做到这一点,但由于某种原因,我无法使其在 excel 上运行(可能是因为我使用的是在线版本的 excel,但我不确定)。我也很乐意使用 R 来做到这一点,以防万一更容易。

提前谢谢你!

附言对奇怪的裁剪数据集感到抱歉(出于隐私考虑)。

【问题讨论】:

  • 你愿意使用VBA吗?因为您无法仅使用公式检查单元格的内部颜色。
  • 我认为 tidyxl 包对于处理以格式输入的数据/信息的 Excel 文件可能很有用;不过需要一些处理。
  • @Lucas 是的,我愿意这样做。你有什么进一步的建议吗?
  • @joran 你介意扩展一下我如何使用 tidyxl 来实现我的目标吗?
  • 我自己没用过,只知道存在。

标签: r excel filter


【解决方案1】:

由于您愿意使用 VBA 并寻求进一步的建议,因此我编写了以下代码作为指南,以便您学习、更改它并达到预期的结果。

假设您有一个名为“Colored data”的工作表,如下所示:

还有一张名为“Analysis”的表格,如下所示:

你可以运行这段代码:

Sub CompareAndHighlightDifferences()

Dim w1 As Worksheet, w2 As Worksheet
Dim cell_color As String
Dim cell_address As String
Dim new_row As Long

Set w1 = Sheets("Colored data")
Set w2 = Sheets("Analysis")

With w1
    For Each cel In .UsedRange
        cell_color = cel.Interior.Color
        cell_address = cel.Address
        new_row = w2.Cells(Rows.Count, 1).End(xlUp).Row + 1
        w2.Cells(new_row, 1) = cell_address
        With w2.Cells(new_row, 2)
            .Value = cell_color
            .Interior.Color = cell_color
        End With
    Next cel
End With

End Sub

并在工作表'Analysis'中获得以下结果:

希望对您有所帮助。

【讨论】:

  • 非常感谢!这非常有帮助。我希望我的第二列包含原始单元格的文本值......所以我会简单地做 .Value = cell_value 吗?不确定正确的语法是什么(我试图用谷歌搜索)。
  • @Mint 因为我们正在迭代每个“cel”,所以您应该将“.Value = cell_color”替换为“.Value = cel.value”。在代码中,“cel”只是调用循环内每个对象的名称。我使用它而不是“单元格”以避免与同名的 VBA 对象混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2017-11-04
  • 2021-06-13
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多