2016-09-26 1 views
-1

Я использовал код, который работает отлично, но я хотел бы, чтобы он показывал два или более зеленых значения (RGB (0,176,80)) в отдельных ячейках в разные столбцы в одной строке вместо того, чтобы отображаться вместе в одной и той же ячейке со знаком +?Редактирование кода Excel VBA для отображения двух или более значений в отдельных столбцах

Option Explicit 

Sub main() 
    Dim row As ListRow 
    Dim icol As Long 
    Dim formula As String 

    For Each row In ActiveSheet.ListObjects("MyTable").ListRows 
     formula = "" 
     For icol = 1 To row.Range.Count - 1 
      With row.Range(1, icol) 
       If .Interior.Color = RGB(0, 176, 80) Then formula = formula & .value & "+" '.Address(False, False) 
      End With 
     Next icol 
     If formula <> "" Then row.Range(1, icol).value = Left(formula, Len(formula) - 1) 
    Next row 
End Sub 

ответ

0

попробовать это

Option Explicit 

Sub main() 
    Dim row As ListRow 
    Dim nCols As Long, icol As Long 
    Dim formula As String 
    Dim arr As Variant 

    With ActiveSheet.ListObjects("MyTable") '<--| reference your table 
     nCols = .ListColumns.Count - 1 '<-- "fix" its initial columns number since subsequent operations will increase it 
     For Each row In .ListRows 
      formula = "" 
      For icol = 1 To nCols 
       With row.Range(1, icol) 
        If .Interior.Color = RGB(0, 176, 80) Then formula = formula & .Value & "+" '.Address(False, False) 
       End With 
      Next icol 
      If formula <> "" Then 
       arr = Split(Left(formula, Len(formula) - 1), "+") '<--| fill an array with 'formula' string elements separated by "+" 
       row.Range(1, icol).Resize(, UBound(arr) + 1).Value = arr '<--| write array content into current row last column adjacent cells 
      End If 
     Next row 
    End With 
End Sub 
+0

Brilliant как всегда. Работала отлично. комментарии также рекомендуется. –

+0

приветствуются – user3598756

Смежные вопросы