So wenden Sie eine Formel auf Zellen mit Werten an

So wenden Sie eine Formel auf Zellen mit Werten an

Ich verwende VBA und habe es geschafft, den folgenden Code anzuwenden, um den Zellen in jedem Spaltenwert (X, AK, AW) „A“ hinzuzufügen.

ActiveSheet.Range("X2:X24").Select
For Each X In Selection
If X.Value <> "" Then X.Value = X.Value & "A"
Next
ActiveSheet.Range("AK2:AK24").Select
For Each AK In Selection
If AK.Value <> "" Then AK.Value = AK.Value & "A"
Next
ActiveSheet.Range("AW2:AW24").Select
For Each AW In Selection
If AW.Value <> "" Then AW.Value = AW.Value & "A"

Ich versuche jetzt jedoch, die folgenden Formeln auf die Spalten Y, Z, AA und AB anzuwenden. Ich möchte, dass dies nur ab der 2. Zelle abwärts und nur für Zellen gilt, die einen Wert haben. Also ab Y2 abwärts, sofern die Zelle nicht leer ist. Ich kriege es einfach nicht hin!

=TODAY()-1     

=TEXT(TODAY(),"YYYYMM")

=TEXT(TODAY(),"MMM YYYY")

Antwort1

Dadurch wird dynamisch die zuletzt verwendete Zeile mit Daten in Spalte Y ermittelt.

Kopiert den Bereich A2:BA+lastRow in ein Array, durchläuft jede Zeile und weist jeder Spalte eine Formel zu (sofern die Zelle nicht leer ist). Platziert das Array dann wieder im Bereich


Option Explicit

Public Sub SetFormulasToNonEmptyCells()

  Dim ur As Range, arr As Variant, r As Long

  'The selected columns start at A (col 1) to BA (col 53)
  Set ur = Sheet1.Range("A2:BA" & Sheet1.Cells(Sheet1.Rows.Count, "Y").End(xlUp).Row)

  arr = ur
  For r = 1 To UBound(arr)
    If Len(Trim$(arr(r, 10))) > 0 Then arr(r, 10) = "=TODAY()-1"                  'J  (10)
    If Len(Trim$(arr(r, 22))) > 0 Then arr(r, 22) = "-1"                          'V  (22)
    If Len(Trim$(arr(r, 25))) > 0 Then arr(r, 25) = "1"                           'Y  (25)
    If Len(Trim$(arr(r, 26))) > 0 Then arr(r, 26) = "1"                           'X  (26)
    If Len(Trim$(arr(r, 27))) > 0 Then arr(r, 27) = "=TEXT(TODAY(),""YYYYMM"")"   'AA (27)
    If Len(Trim$(arr(r, 28))) > 0 Then arr(r, 28) = "=TEXT(TODAY(),""MMM YYYY"")" 'AB (28)
    If Len(Trim$(arr(r, 46))) > 0 Then arr(r, 46) = "-1"                          'AT (46)
  Next
  ur.Formula = arr
  ur.Columns(4).NumberFormat = "mmm yyyy" 'Use col #'s instead of letters
End Sub

verwandte Informationen