ищем значение в столбце A на листе A в столбце B, представленном на листе B, и меняем цвет - PullRequest
0 голосов
/ 10 апреля 2019

Есть несколько шагов в том, что я пытаюсь сделать, так что терпите меня.

У меня есть два листа A и B

Лист A

                    Jan     Feb     March   Apr Jun Jul Aug Sep Oct Nov Dec         
Names   SubNames                
Apple   Apple1      30.00                    -   -   -   -   -   -   -   -
        Apple2      45.00   10               -   -   -   -   -   -   -   -
        Apple3                               -   -   -   -   -   -   -   -
        Apple4                               -   -   -   -   -   -   -   -
        SubTotal    75.00   0.00    10.00    
Banana  Banana11                             -   -   -   -   -   -   -   -
        Banana22    15.00                    -   -   -   -   -   -   -   -
        Banana33    32.00   17.75   65.00    -   -   -   -   -   -   -   -
        SubTotal    37.00   32.75   34.50   
Cherry  1Cherry1    28.00   13.78   43.00    -   -   -   -   -   -   -   -
        2Cherry2            20.00       
        3Cherry3    20.00   16.50   100.00   -   -   -   -   -   -   -   -  
        Subtotal    48.00   50.28   143.00   -   -   -   -   -   -   -   -
Dragon  DragonF1    31.00   35.00            -   -   -   -   -   -   -   -
        Subtotal    31.00   35.00   0.00    
        Grand Total 191.00  118.03  187.50  
                            496.53          

Лист Б

                    Jan     Feb     March   Apr Jun Jul Aug Sep Oct Nov Dec     
Names   SubNames            
Apple   Apple1      30.00                    -   -   -   -   -   -   -   -
        Apple2      60.00                    -   -   -   -   -   -   -   -
        Apple3                               -   -   -   -   -   -   -   -
        Apple4                               -   -   -   -   -   -   -   -
        SubTotal    90.00   0.00    0.00
Banana  Banana11                             -   -   -   -   -   -   -   -
        Banana22                             -   -   -   -   -   -   -   -
        Banana33    37.00   17.75   34.50    -   -   -   -   -   -   -   -
        SubTotal    37.00   17.75   34.50
Cherry  1Cherry1    28.00   13.78   63.15    -   -   -   -   -   -   -   -
        2Cherry2            15.35            -   -   -   -   -   -   -   -
        3Cherry3    35.00   16.50   97.65    -   -   -   -   -   -   -   -
        Subtotal    63.00   45.63   160.80
Extra   Extra1234   30.00                    -   -   -   -   -   -   -   -
        Extra4321                            -   -   -   -   -   -   -   -
        Subtotal    30.00   0.00    0.00
Dragon  DragonF1    31.00   34.50            -   -   -   -   -   -   -   -
        Subtotal    31.00   34.50   0.00     -   -   -   -   -   -   -   -
     Grand Total    251.00  97.88   195.30
                            544.18      

Есть столбцы от A - O

Мне нужно проверить, соответствуют ли значения в столбце B листа B значениям в листе A и столбце B

Если это так, мне нужно сравнить значения в январе, феврале и марте следующим образом:

Измените цвет ячейки на Зеленый на Листе B, если значение увеличивается с Листа A до B Измените цвет ячейки на Уменьшается в Листе B, если значение уменьшается от Листа A до B

Поля промежуточных итогов и итогов можно игнорировать.

Я продолжаю получать ошибки, но я не уверен, что мой код завершен.

Public Sub Edit()
    Dim myRange As Range
    Dim iCell As Range
    Dim LastRow As Integer, Row As Integer, Col As Integer
    Dim CSheet As Integer, PSheet As Integer
    CSheet = ActiveSheet.Index
    PSheet = CSheet - 1

    Set cs = ActiveSheet
    Set ps = Worksheets(PSheet)

    'selecting range of active region
    Set myRange = Range(ActiveSheet.Range("A3:O3"), ActiveSheet.Range("A3:O3").End(xlDown))

    LastRow = Cells(Rows.Count, 15).End(xlUp).Row

    'Highlighting all rows with no entries for forecast
    For Row = 3 To LastRow
        If WorksheetFunction.CountBlank(Range("C" & Row & ":O" & Row)) = "13" Then
            Range("C" & Row & ":O" & Row).Style = "Note"
        End If

        'Highlighting green and red
        If cs.VLookup(Range("B" & Row).Value, ps.Range("B2:B100"), 0) Then
            For Col = 3 To 15
                If cs.Cells(Row, Col) >= ps.Cells(Row & Col) Then
                    cs.Cells(Row, Col).Style = "Good"
                Else
                    cs.Cells(Row, Col).Style = "Bad"
                End If
            Next Col

        End If

    Next Row
End Sub

1 Ответ

0 голосов
/ 11 апреля 2019

Если я правильно прочитал ваш вопрос, вы бы хотели изменить форматирование ячейки на основе некоторой информации, которую можно извлечь из формулы.

Есть два разных случая:

  1. Вы хотите, чтобы форматирование этой ячейки происходило только на основе взаимодействия с пользователем (например, нажатие кнопки). В этом случае можно выбрать VBA.
  2. Вы хотите, чтобы форматирование этой ячейки происходило автоматически. В этом случае лучше выбрать условное форматирование.

Если вы выберете условное форматирование, вам может потребоваться формула, основанная на следующем:

=VLookup(A!B3;B!$B$2:$B$100;2) // this will give the value for January for Apple1 in sheet B.
                               // In case "Apple1" is not there, you get a #N/A error.
=ISNA(...)                     // You might use this for catching #N/A errors.
...

Итак, в основном вы получите формулу, подобную этой:

=ISNA(VLOOKUP(...);0) - ISNA(VLOOKUP(...);0)>0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...