Раскраска пустых ячеек столбца на основе значения в другом столбце

#excel #vba

#excel #vba

Вопрос:

Я новичок в макросе VBA. Я пытаюсь создать макрос, который раскрашивает пустую ячейку в столбце с именем «Груз, полученный в порту погрузки» и «Полный въезд на океанский терминал (CY или порт)» со ссылкой на значение в другом столбце с именем «Тип груза». Пример, если столбец «Тип груза» имеет значения «BB» и «RORO», тогда столбец «Полный вход на океанский терминал (CY или порт)» с единственной пустой ячейкой должен быть окрашен или выделен желтым цветом. Аналогично, если столбец «Тип груза» имеет значение «FCL», то столбец «Груз, полученный в порту погрузки» с единственной пустой ячейкой должен быть окрашен или выделен желтым цветом.

Как показано на экране Excel, если столбец «Тип груза» имеет значение «RORO» или «BB», то столбец «Полный въезд на океанский терминал (CY или порт)» с пустыми ячейками должен быть желтого цвета, а если столбец «Тип груза» имеет значение «FCL», тостолбец «Груз, полученный в порту погрузки» с пустыми ячейками должен быть желтого цвета.

Комментарии:

1. Взгляните на «Условное форматирование» для листов Excel. Вероятно, вы можете достичь желаемого, вообще не используя VBA.

2. Я мог бы это сделать, но этот лист с именем «POL» генерируется / создается макрокомандой, поэтому существует большая цепочка макрокоманд, которая генерирует этот лист POL, поэтому я сомневаюсь, будет ли работать форматирование условий или нет, и даже если я поставлю условие, тогда вставка значения будет затруднена, потому что этот лист POL являетсядесять дополнительных экспортированных в новый файл Excel. Поскольку я новый макрос VBA. Поэтому я бы предпочел использовать макрос. @DS_London

3. Существуют ли типы, отличные от RORO, BB и FCL? Если нет, то вы просто хотите покрасить каждую пустую ячейку в желтый цвет в вашем образце?

4. @DS_London Это похоже на то, что если тип загрузки столбца имеет значение RORO или BB, то соответствующий столбец «Полный въезд на океанский терминал (CY или порт)» только с пустыми ячейками должен быть желтого цвета, а если тип загрузки столбца равен значению FCL, то соответствующий столбец «Груз, полученный в порту погрузки» с пустыми ячейками должен бытьжелтый цвет.

5. В столбце «Тип груза» есть только 3 типа RORO BB и FCL, и есть два соответствующих столбца, заполненных в воротах на океанском терминале (CY или порту) и Груз, полученный в порту погрузки, с некоторыми пустыми ячейками, поэтому на основе значения, присутствующего в столбце «Тип груза», т.е. RORO FCL и BBэти 2 столбца с пустыми ячейками должны быть выделены желтым цветом, чтобы значение было равно RORO или BB, тогда соответствующий столбец, заполненный в воротах океанского терминала (CY или порта) с пустой ячейкой, должен быть выделен желтым цветом…

Ответ №1:

ОТРЕДАКТИРОВАНО: для изменения назначения colLoadType

 Option Explicit
Sub sfdf()
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Sheets("frfr")

    'Assumes no blank rows in the Load Type column
    Dim colLoadType As Range, colCargo As Range, colFull As Range
    'Assumes first data is in Row 2 in the spreadsheet
    Set colLoadType = ws.Range("O2",ws.Cells(ws.Rows.Count,"O").End(xlUp))

    Dim lRows As Long
    lRows = colLoadType.Rows.Count
    Set colCargo = ws.Range("S2").Resize(lRows)
    Set colFull = ws.Range("T2").Resize(lRows)

    Dim lRow As Long
    Dim strType As String
    For lRow = 1 To lRows
        strType = colLoadType(lRow, 1).Value
        If (strType = "BB" Or strType = "RORO") And IsEmpty(colFull(lRow, 1)) Then
            colFull(lRow, 1).Interior.ColorIndex = 6
        ElseIf strType = "FCL" And IsEmpty(colCargo(lRow, 1)) Then
            colCargo(lRow, 1).Interior.ColorIndex = 6
        End If
    Next lRow
End Sub
  

Комментарии:

1. это работает, но см. Только несколько, т.Е. Были выделены первые 4 пустые ячейки… Я вставил скриншот вывода в вопрос, пожалуйста, смотрите Мое редактирование в его вопросе для получения выходного результата. Окрашены только первые 4 пустые ячейки.. пожалуйста, проверьте и помогите @DS_London

2. Пожалуйста, покажите заголовки столбцов (A, B, C, D и т. Д.) И Удалите фильтр, Чтобы все ячейки были видны. Как указано, в ответе предполагается, что первый тип находится в ячейке O2, и в этом столбце нет пустых строк.

3. ,, пожалуйста, посмотрите на скриншот, который я вставил снова, он не выделяет полные пустые ячейки

4. Обратите внимание, что в типе загрузки столбца также есть несколько пустых ячеек, в которых есть значения BB roroи FCL См. Выходные данные в приведенных выше правках

5. В столбце O есть банковские ячейки