Excel vba, Ändern von Zellreferenzen in der Formel, um auf einen anderen Zellstandort zu verweisen


0

Ich versuche, nur Teile der Formelspaltenposition um eine bestimmte Anzahl von Spalten an eine andere Spaltenposition zu verschieben (zu versetzen). Die Formelzellen ändern sich von Blatt zu Blatt. Ich habe Tausende von Formeln, die alle unterschiedliche Zellpositionen haben. Also bevorzuge ich eine Art VBA-Makrolösung. Dies ist die ursprüngliche Formel:

=IF(AND($A$9=1,GH10=GT12),0,IF(AND($A$9=2,GI10=GS13),0,IF(AND($A$9=3,GJ10=GR14),0,1)))

und möchte es geändert haben:

=IF(AND($A$9=1,GI10=GT12),0,IF(AND($A$9=2,GJ10=GS13),0,IF(AND($A$9=3,GK10=GR14),0,1)))

Dies ist eine Spalte weiter, aber nur der Zähler (GH10 -> GI10 und GI10 -> GJ10 usw.). Und haben die gleiche konstante Zeilennummer.

Ich habe diesen Code gefunden (siehe unten). Ich kann aus einem Dropdown-Feld auswählen, wie viele Spalten verschoben werden sollen (NICHT NOTWENDIG, solange ich ihn manuell in den Code eingeben kann). Dies ändert jedoch auch den Nenner der Formel. (HINWEIS: ICH KANN NICHT $ zu den Teilen der Formel hinzufügen, die ich nicht ändern möchte. Die Formel muss dynamisch bleiben.)

Sub Macro1()
    Dim nbr As Long, cel As Range, cels As Range, sh As Worksheet
    Set cels = Selection

    nbr = CLng(InputBox("Enter offset:"))

    Set sh = Worksheets.Add

    For Each cel In cels

        If cel.HasFormula Then

            sh.Cells(cel.Row, cel.Column + nbr).FormulaR1C1 = cel.FormulaR1C1
            cel.Formula = sh.Cells(cel.Row, cel.Column + nbr).Formula

        End If

    Next

    Application.DisplayAlerts = False
        sh.Delete
    Application.DisplayAlerts = True

End Sub

Dies gilt jeweils für eine Zelle. Wenn es einen funktionierenden VBA-Code gibt, kann er einen ausgewählten Bereich aufnehmen, der sich von einer einzelnen Zelle unterscheidet?


Ich weiß, dass Sie nach einer VBA-Lösung gefragt haben, aber Sie haben überlegt OFFSET, wie Offset(GH10,,cell_reference)der Zellenverweis den Spaltenversatz für dieses Blatt enthalten soll.
Rey Juna

GH10 wird nur in einer von tausend Formeln verwendet; Das nächste Blatt hat einen anderen Zellenzeiger.
Dendy792

Warum verwendest du nicht Find & Replacemit Formula Option, oder ich kann VBA für vorschlagen Find & Replace. Sagen Sie mir, wie kann Zeilen , die Sie ändern müssen , um GJ10mit GK10?
Rajesh S

in nur 1 Reihe, auf über 1000 Blatt. GJ10 besteht nur aus einer Formel von tausend Formeln, die auf tausend Blätter verteilt sind. Ich müsste Find tausendmal eingeben und kenne die Zelle, die in Find eingegeben werden soll. Ich möchte nur den "Zähler" -Teil des Tests versetzen (dh: GJ10 = GR14), nur GJ10, versetzt um 1 + -Spalte zu (GK10 = GR14).
Dendy792

Warum suchen und ersetzen nicht GJmit GKin den Formeln der entsprechenden Spalte? Wenn Sie es nicht manuell tun möchten, kann es mit leicht automatisiert werden Range.Replace.
cybernetic.nomad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.