Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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?
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 11.04.2014
Version(en): Office 365
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
00202
Nicht registrierter Gast
(23.04.2020, 11: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: [attachment=31304]
Registriert seit: 12.01.2020
Version(en): 2010, 2021
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-aendernGruß Fred
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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.
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
24.04.2020, 10:02
(Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2020, 10:03 von sharky51.)
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
|