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.

Excel Zellformel per vba ändern
#1
Hallo zusammen,

darf ich Euch um einen Rat für folgende Aufgabe fragen?

Ich habe ein Workbook mit 90 Tabellenblättern, die alle gleich aufgebaut sind, sich aber in der Anzahl der Zeilen verändern können.
In der Ausgangstabelle stehen jeweils in Zelle "G31" und "G33" die folgenden Formeln:

"G31": =G29/WERT(LINKS(F31;FINDEN(" ";F31;1)-1))

"G33": =(G29/WERT(LINKS(F33;FINDEN(" ";F33;1)-1))

Diese beiden Formeln möchte ich gerne ändern damit wenn keine Zahlenwerte eingetragen sind #DIV/0! nicht erscheint.
Die geänderte Formel lautet ja so:

"G31": =Wennfehler(G29/WERT(LINKS(F31;FINDEN(" ";F31;1)-1));0)

"G33": =Wennfehler(G29/WERT(LINKS(F33;FINDEN(" ";F33;1)-1));0)

Wie kann ich diese Formel in allen Tabellenblättern per vba ändern?

Vielleicht könnt Ihr mir dazu einen Lösungsweg zeigen?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hallo Erich,

ich habe deine Formel bei mir in der Zelle G31 eingetragen, bin in den VBA-Editor gewechselt und habe im Direktfenster (STRG + G) ?Range("G31").FormulaR1C1Local eingetragen und Return gedrückt Das Ergebnis war dies

=Z(-2)S/WERT(LINKS(ZS(-1);FINDEN(" ";ZS(-1);1)-1))

Wobei ich persönlich die englische Schreibweise verwenden würde.

Reicht dir das? Näheres erfährst Du hier
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Hallo,

90 Tabellenblätter die alle gleich aufgebaut sind, das ist schon mal ganz schlecht. Gleichartige Daten gehören auf ein Blatt. Wenn du nun schon zu VBA greifen möchtest, würde ich damit nicht die Formeln ändern, sondern das Makro so schreiben, dass es die Berechnung direkt ausführt und nur das Ergebnis in der Liste einträgt.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#4
(23.04.2020, 10:59)sharky51 schrieb: Wie kann ich diese Formel in allen Tabellenblättern per vba ändern?

Vielleicht könnt Ihr mir dazu einen Lösungsweg zeigen?

Hallo Erich, :19:

schau dir mal die Anlage an: :21:

.xlsb   Formel_per_VBA_in_allen_Tabellenblaettern_aendern.xlsb (Größe: 21,79 KB / Downloads: 4)
________
Servus
Case
Antworten Top
#5
Hallo Erich,

muss es unbedingt VBA sein ?
wenn alle Tabellenblätter gleich aufgebaut sind und die Formeln auf jedem Tabellenblatt jeweils in den gleichen Zellen stehen, geht das auch ohne VBA ganz fix.
Im sogenannten "Gruppenmodus" kann man eine Änderung auf mehreren Taellenblättern gleichzeitig vornehmen.

Die zu bearbeitenden Tabellenblätter über die Tab-Register selektieren (Mehrfachauswahl mit Strg- bzw Shift-Taste) => alle Änderungen / Eingaben werden gleichzeitig auf alle selektierten Tabellenblätter übernommen.

Siehe z.B. hier:
https://www.schieb.de/745999/zelle-in-me...ig-aendern

Gruß
Fred
Antworten Top
#6
Hallo zusammen,

damit meine ich Stefan, Klaus-Dieter, Case und Fred.....vielen Dank für Eure Vorschläge.
Ich werde jetzt mal in Ruhe alle austesten.

Nur zu Erklärung, die Blätter sind zwar alle in Ihrer Struktur gleich aufgebaut, aber jedes Blatt ist einer anderen Firma zugeordnet.
D.h., es sind bereits eingetragene Daten in jedem Blatt vorhanden, die für sich auf jedem Blatt ein Alleinstellungsmerkmal haben.
Also alles auf ein Blatt ist somit ausgeschlossen und verbietet sich.
Die Tabellen wachsen auch mit jeder Eingabe von Daten, somit stehen die Formeln nicht in der gleichen Zelle, sie verschieben sich.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#7
Hallo zusammen,

nochmals vielen Dank für Eure Beiträge.
Ich bin aber jetzt von der Formelgenerierung in den Zellen abgekommen und schreibe das errechnete vba-Ergebnis direkt in die Zellen.

So:
Code:
Sub Durchschnittswerte_Einzelblatt()
 
  lastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
  gesSumRow = Range("Gesamt_Summe").Row
 
  If lastRow = 3 And Range("Gesamt_Summe") = 0 Then
      Cells(gesSumRow + 2, 7).Value = 0
      Cells(gesSumRow + 2, 7).NumberFormat = "#,##0.00 €"
      Cells(gesSumRow + 4, 7).Value = 0
      Cells(gesSumRow + 4, 7).NumberFormat = "#,##0.00 €"
  Else
      'MsgBox DateDiff("m", (Cells(4, 2).Value), (Cells(lastRow, 2).Value))
      'MsgBox DateDiff("yyyy", (Cells(4, 2).Value), (Cells(lastRow, 2).Value))
      monValue = Range("Gesamt_Summe") / DateDiff("m", (Cells(4, 2).Value), (Cells(lastRow, 2).Value))
      yearValue = Range("Gesamt_Summe") / (Cells(gesSumRow, 9).Value)
      Cells(gesSumRow + 2, 7).Value = monValue
      Cells(gesSumRow + 2, 7).NumberFormat = "#,##0.00 €"
      Cells(gesSumRow + 4, 7).Value = yearValue
      Cells(gesSumRow + 4, 7).NumberFormat = "#,##0.00 €"
  End If
End Sub

Dann bis zur nächten Verwirrung  Huh
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


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