Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何提取具有特定颜色的所有单元格值(以及它们的单元格ID)?_R_Excel_Filter - Fatal编程技术网

R 如何提取具有特定颜色的所有单元格值(以及它们的单元格ID)?

R 如何提取具有特定颜色的所有单元格值(以及它们的单元格ID)?,r,excel,filter,R,Excel,Filter,我有一个数据集,看起来像 我想创建另一个只有两列的数据集: (1) 所有红色单元格的值/文本 (2) 与每个值/文本关联的原始单元格ID 本质上,它应该是这样的 我假设有一种简单的方法可以做到这一点,但由于某种原因,我无法使它在excel上工作(可能是因为我使用的是excel的在线版本,但我不确定)。我也很乐意用R来做这件事,以防更简单 提前谢谢你 p、 很抱歉这个奇怪的裁剪数据集(为了隐私而做)。由于您愿意使用VBA并要求提供进一步建议,我编写了下面的代码作为指导,以便您可以学习、更改它并

我有一个数据集,看起来像

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

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

本质上,它应该是这样的

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

提前谢谢你


p、 很抱歉这个奇怪的裁剪数据集(为了隐私而做)。

由于您愿意使用VBA并要求提供进一步建议,我编写了下面的代码作为指导,以便您可以学习、更改它并获得所需的结果

假设您有一个名为“彩色数据”的工作表,如下所示:

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

您可以运行以下代码:

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
并在表格“分析”中获得以下结果:


希望有帮助。

您愿意使用VBA吗?因为你不能只使用公式来检查单元格的内部颜色。我认为tidyxl包对于处理以格式输入数据/信息的Excel文件可能很有用;但需要一些处理。@Lucas是的,我愿意这样做。你有什么进一步的建议吗?@joran你介意详细介绍一下我如何使用tidyxl来实现我的目标吗?我自己从来没有使用过它,我只知道它存在。非常感谢!这是非常有帮助的。我希望我的第二列包含原始单元格的文本值。。。那么我会简单地做吗。Value=cell\u Value?不确定正确的语法是什么(我试着用谷歌搜索)。@Mint因为我们正在迭代每个“cel”,你应该用“.Value=cell.Value”替换“.Value=cell\u color”。在代码中,“cel”只是一个名称,用于调用循环中的每个对象。我使用它而不是“cell”,以避免与同名的VBA对象混淆。