MS Excel 2016 - Spaltenbuchstaben subtrahieren

MS Excel 2016 - Spaltenbuchstaben subtrahieren

Ich habe die aktuelle Formel unten in Zelle A1, wo ich den Spaltenbuchstaben in eine neue Zelle B1 minus/subtrahieren muss. Ich habe diesen Beitrag durchgesehen, konnte ihn aber nicht bearbeiten: Wie addiert, subtrahiert oder erhöht man Spaltenbuchstaben in Excel?

Beispielsweise wird eine Formel oder ein Makro benötigt, um Werte für Spalte B zu erstellen, die mit denen in Spalte A identisch sind, jedoch einen Spaltenbuchstaben abziehen/minusieren.

    Column A        | Column B  
    =+Jan!$V$36     | =+Jan!$U$36
    =+Jan!$AD$36    | =+Jan!$AC$36
    =+Jan!$AH$36    | =+Jan!$AG$36

Antwort1

Das +in Ihren Formeln ist überflüssig und nicht erforderlich.

Hier ist eine UDF, die die geänderte Formel in die angrenzende Spalte einfügt

Annahmen:

  • Ihre Formeln sind einfach, wie Sie mit nur einer einzigen Zellreferenz zeigen
  • Der Zellbezug steht immer am Ende der Formel.
  • Für die Zellreferenz wird immer der absolute Adressierungsmodus verwendet.
  • Um die Dinge einfacher zu machen
    • Wir verwenden die R1C1-Notation in VBA
    • Wir suchen vom Ende der Zeichenfolge in umgekehrter Reihenfolge nach demC
    • Dadurch erhalten wir die Spaltennummer, von der wir subtrahieren, 1um die geänderte Formel zu erhalten.

Dies sollte Ihnen genügend Informationen geben, damit Sie Änderungen vornehmen können, falls Ihre veröffentlichten Daten nicht mit Ihren tatsächlichen Daten übereinstimmen.

*Beachten Sie, dass es beim Zurückschreiben in das Arbeitsblatt wieder in die A1Notation umgewandelt wird.

Option Explicit
Sub prevCol()
    Dim R As Range, C As Range
    Dim WS As Worksheet
    Dim sForm As String
    Dim lColPos As Long, lColNum As Long

Set WS = Worksheets("sheet3") 'or wherever you have the formulas
With WS
    Set R = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With

For Each C In R
    If C.HasFormula Then
        sForm = C.FormulaR1C1

        'assuming column number is at the end
        lColPos = InStrRev(sForm, "C")
        lColNum = Mid(sForm, lColPos + 1, 9)
        C.Offset(0, 1).FormulaR1C1 = Left(sForm, lColPos) & lColNum - 1
    End If
Next C

End Sub

Bildbeschreibung hier eingeben

verwandte Informationen