Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Wert suchen und Formel einfügen
#1
Hallo zusammen,

ich hätte ein Anliegen, welches (wahrscheinlich) VBA-Kenntnisse erfordert.

Folgendes soll mit der Formel bzw mit dem Code erreicht werden:

- Suche auf dem Tabellenblatt die Werte "LT"
- Setze in die Zellen davor folgende Formeln
  • 4 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B5
  • 5 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B4
  • 7 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B3
  • 9 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B2
- Dann springe zum nächsten "LT" und mache das gleiche, so lange bis alle "LT" gefunden wurden und die Formel eingefügt wurde.

Ich weiß nicht ob das umsetzbar ist. Eine Beispieldatei habe ich angehängt.
Ziel der Aktion ist, dass "LT" variabel in der Tabelle eingetragen (und auch wieder gelöscht) werden kann und die Berechnung in den Zellen davor automatisch durchgeführt wird.

Danke vorab für eure Hilfe :19:

Viele Grüße
Alpha


Angehängte Dateien
.xlsx   LT_Beispieltabelle.xlsx (Größe: 9,58 KB / Downloads: 8)
Antworten Top
#2
Würde mich auch schon über einen Ansatz sehr freuen :15:
Antworten Top
#3
Hi Alpha,

probiere mal folgendes VBA-Macro:

Code:
Sub LTOffsetBerechnen()

   Dim Zelle As Range
   Dim firstAddress As String

   With Range("D8:S11")
       Set Zelle = .Find("LT", LookIn:=xlValues)
       If Not Zelle Is Nothing Then
           firstAddress = Zelle.Address
           Do
               Zelle.Offset(, -Range("A5")) = Cells(Zelle.Row, 2) * Range("B5")
               Zelle.Offset(, -Range("A4")) = Cells(Zelle.Row, 2) * Range("B4")
               Zelle.Offset(, -Range("A3")) = Cells(Zelle.Row, 2) * Range("B3")
               Zelle.Offset(, -Range("A2")) = Cells(Zelle.Row, 2) * Range("B2")
               Set Zelle = .FindNext(Zelle)
           Loop While Not Zelle Is Nothing And Zelle.Address <> firstAddress
       End If
   End With

End Sub
Du solltest das noch so anpassen, dass die Range-Bezeichnungen ("A5" ... usw.) flexibler gehalten werden können. Auch den Suchbereich (hier: "With Range("D8:S11")") solltest du anpassen. Bereichsnamen sind eine gute Hilfe Wink
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
[-] Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:
  • Alpha_2412
Antworten Top
#4
Hallo LuckyJoe,

vielen Dank schon mal für die Antwort!
Leider komme ich mit meinem relativ begrenzten VBA-Kenntnissen aber nicht zu einer Lösung. Huh

Über weitere Vorschläge würde ich mich daher freuen

Grüße
Alpha
Antworten Top
#5
Hi,

Begriffsbestimmung
Zitat:Über weitere Vorschläge würde ich mich daher freuen 

Du benötigst keinen Vorschlag, sondern eine fertige Lösung, ohne selbst nach denken zu müssen?
Dann biste hier falsch
Antworten Top
#6
Hi Wastl,

wenn jemand aufgrund fehlendem Wissen nicht weiterkommt und nachfragt, deckt das den Sinn und Zweck eines Forums durchaus ab.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#7
(26.04.2018, 11:11)Wastl schrieb: Hi,

Begriffsbestimmung

Du benötigst keinen Vorschlag, sondern eine fertige Lösung, ohne selbst nach denken zu müssen?
Dann biste hier falsch

Danke für deinen konstruktiven Beitrag, ich hoffe dir geht es jetzt besser Smile


Ich suche keine fertige Lösung und ich habe durchaus versucht mit dem Code von LuckyJoe eine funktionierende Lösung hin zu bekommen. Aber ich habe festgestellt
dass bei VBA anscheinend viele Wege nach Rom führen, daher habe ich gehofft einen Vorschlag zu bekommen, mit dem ich mein Problem lösen kann.
Oder vielleicht noch ein Tipp von LuckyJoe.
Antworten Top
#8
Hallo Alpha,
Sub LTOffsetBerechnen_2()

  Dim Zelle As Range
  Dim firstAddress As String

  With Range("C7").CurrentRegion
      Set Zelle = .Find("LT", LookIn:=xlValues, LookAt:=xlWhole)
      If Not Zelle Is Nothing Then
          firstAddress = Zelle.Address
          Do
              Zelle.Offset(, -Range("A2").Value).FormulaR1C1 = "=RC2*R2C2"
              Zelle.Offset(, -Range("A3").Value).FormulaR1C1 = "=RC2*R3C2"
              Zelle.Offset(, -Range("A4").Value).FormulaR1C1 = "=RC2*R4C2"
              Zelle.Offset(, -Range("A5").Value).FormulaR1C1 = "=RC2*R5C2"
              Set Zelle = .FindNext(Zelle)
          Loop While Not Zelle Is Nothing And Zelle.Address <> firstAddress
      End If
  End With

End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Alpha_2412
Antworten Top
#9
Thumbs Up 
Hallo Uwe,

vielen Dank - funktioniert super! :19: 

Eine Frage hätte ich noch:
Das ganze läuft in einem als Tabelle formatierten Bereich und Excel kommt auf die schlaue Idee eine Autovervollständigung der Tabelle vorzunehmen und die Spalten voll zu schreiben mit den Werten.
in Datei--> Optionen --> Erweitert habe ich bereits den Haken bei "AutoVerfollständigung für Zwellwerte aktivieren" raus genommen, allerdings werden die Spalten weiterhin gefüllt.

Gibt es eine Möglichkeit per VBA die Tabellenvervollstädnigung für ein bestimmtes Blatt zu deaktivieren?

Danke und viele Grüße
Alpha
Antworten Top
#10
Zitat:Gibt es eine Möglichkeit per VBA die Tabellenvervollstädnigung für ein bestimmtes Blatt zu deaktivieren?
Mir fällt nur ein, die Intelligente Tabelle wieder in Bereich konvertieren
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste