/ / Konsolidacja przesunięcia (1,0), przesunięcia (-1,0) i komórki docelowej w jednym kodzie w pętli - vba, excel-vba, excel

Kompensowanie przesunięcia (1,0), przesunięcie (-1,0) i komórka docelowa w jeden kod w pętli - vba, excel-vba, excel

Masz pomysł, jak skonsolidować następujące 3 części w 1? Mam dużo arkuszy i robi się szalenie długo ... Dzięki za społeczność! :)

Dim i As Long
Dim j As Long

For i = 3 To 73 Step 3
For j = 2 To 33

Set curcell = Worksheets("Earliest Corr").Cells(i, j)

If curcell.Value < 0.05 Then
curcell.Interior.ColorIndex = 45
ElseIf curcell.Value >= 0.05 And curcell.Value < 0.1 Then
curcell.Interior.ColorIndex = 6
ElseIf curcell.Value >= 0.1 And curcell.Value < 0.2 Then
curcell.Interior.ColorIndex = 36
End If

If curcell.Value < 0.05 Then
curcell.Offset(1, 0).Interior.ColorIndex = 45
ElseIf curcell.Value >= 0.05 And curcell.Value < 0.1 Then
curcell.Offset(1, 0).Interior.ColorIndex = 6
ElseIf curcell.Value >= 0.1 And curcell.Value < 0.2 Then
curcell.Offset(1, 0).Interior.ColorIndex = 36
End If

If curcell.Value < 0.05 Then
curcell.Offset(-1, 0).Interior.ColorIndex = 45
ElseIf curcell.Value >= 0.05 And curcell.Value < 0.1 Then
curcell.Offset(-1, 0).Interior.ColorIndex = 6
ElseIf curcell.Value >= 0.1 And curcell.Value < 0.2 Then
curcell.Offset(-1, 0).Interior.ColorIndex = 36
End If

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz skompresować te bloki kodu razem przezpołączenie trzech komórek docelowych w jednym obiekcie zakresu. Również w twoich blokach ElseIf nie potrzebujesz pierwszego warunku. Aby osiągnąć swój pierwszy ElseIf, wiemy już, że wartość currcell jest większa lub równa 0,5.

Dim rng As Range, curcell As Range
Dim i As Long, j As Long

For i = 3 To 73 Step 3
For j = 2 To 33
Set curcell = Worksheets("Earliest Corr").Cells(i, j)
Set rng = Worksheets("Earliest Corr").Range(Cells(i - 1, j), Cells(i + 1, j))
If curcell.Value < 0.05 Then
rng.Interior.ColorIndex = 45
ElseIf curcell.Value < 0.1 Then
rng.Interior.ColorIndex = 6
ElseIf curcell.Value < 0.2 Then
rng.Interior.ColorIndex = 36
End If
Next j
Next i