Как я могу извлечь все значения ячеек (а также их идентификаторы ячеек), которые имеют определенный цвет? - PullRequest
2 голосов
/ 18 апреля 2019

У меня есть набор данных, который выглядит как this .

enter image description here

Я хочу создать еще один набор данных, который имеет только два столбца:

(1) Значение / текст всех ячеек красного цвета (2) Исходный идентификатор ячейки, связанный с каждым значением / текстом

По сути, это должно выглядеть как это .

enter image description here

Я предполагаю, что есть простой способ сделать это, но по какой-то причине я не смог заставить его работать на Excel (возможно, это потому, что я использую онлайн-версию Excel, но я не уверен ). Я также был бы рад сделать это, используя R, на случай, если это будет проще.

Заранее спасибо!

p.s. Извините за странно обрезанный набор данных (сделано для конфиденциальности).

1 Ответ

2 голосов
/ 18 апреля 2019

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

Предполагается, что у вас есть лист с именем ' Цветные данные ', например:

enter image description here

И лист с именем ' Анализ ', например:

enter image description here

Вы можете запустить этот код:

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

И добиться следующих результатов в листе « Анализ »:

enter image description here

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...