Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formel in Werte umwandeln (Tabellen-Spalte)

Formel in Werte umwandeln (Tabellen-Spalte)
25.11.2017 03:23:17
Kisska
Hallo allerseits,
ich suche nach einem kurzen Code, der in eine Tabellenspalte das Ergebnis einer Formel als Werte schreibt.
Meine Formel für die Spalte "test":

Sub String_Dateiname()
Range("Tabelle1[test]") = _
"=RIGHT(LEFT(MID(CELL(""Dateiname"",R[-15]C[-4]),FIND(""["",CELL(""Dateiname"",R[-15]C[- _
4]))+1,FIND("".xl"",CELL(""Dateiname"",R[-15]C[-4]))-FIND(""["",CELL(""Dateiname"",R[-15]C[-4]))-1),10),6)"
End Sub
Meine Makro-Lösung für Umwandlung in feste Werte:

Range("Tabelle1[test]").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

Gibt es eine bessere und kürzere Lösung?
Ich habe nach Lösung im Weg gesucht und folgende Seite gefunden:
https://www.xing.com/communities/posts/formeln-in-werte-umwandeln-1002110352
werde allerdings daraus nicht schlau - was mit "Tabelle1.UsedRange.Value = Tabelle1.UsedRange.Value" gemeint ist.
Ich freu mich auf eure Tiips :-)
VG
Kisska
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
UsedRange: benutzter Bereich ...
25.11.2017 05:55:11
Matthias
Hallo
Sub Frml_in_Werte()
With Tabelle1.UsedRange.Cells
.Value = .Value
End With
End Sub
Wandelt alle Formelergebnisse im benutzten Bereich(UsedRange) in feste Werte um.
Kannst aber eben auch einen anderen Bereich angeben, statt UsedRange.Cells
z.B
Sub Frml_in_Werte()
With Tabelle1.Range("B1:B25")
.Value = .Value
End With
End Sub
... wandelt eben dann die Formelergebnisse nur in diesem Bereich um.
Gruß Matthias
Anzeige
Danke & letzte Frage
26.11.2017 14:49:54
Kisska
Hallo Matthias,
Besten Dank für die Erklärung!
Dumme Frage, aber es interessiert mich: Sind die beiden Codes in der Ausübung völlig gleich bzw. welcher ist schneller/besser?
Nr1:

With Range("Tabelle1[test]")
.Value = .Value
End With
Nr2:

With Range("Tabelle1[test]")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
VG
Kisska
Anzeige
AW: Kein select, bitte
25.11.2017 09:37:44
Gerd
Hallo,
dein Code, etwas eingedampft.
Sub kisska()
With Range("Tabelle1[test]")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
End Sub
Gruß Gerd
Danke!!
26.11.2017 14:03:52
Kisska
Oh lieben Dank für die Verbesserung, Gerd!
wie select hier umgehen?
26.11.2017 14:16:57
Kisska
Gern, eine kurze Frage:
Mein angepasster Code nach deiner Korrektur:

Sub Dateiname_feste_Werte()
Application.CutCopyMode = False
' String aus Dateinamen in Spalte schreiben
Range("Tabelle1[test]") = _
"=RIGHT(LEFT(MID(CELL(""Dateiname"",R[-15]C[-4]),FIND(""["",CELL(""Dateiname"",R[-15]C[- _
4]))+1,FIND("".xl"",CELL(""Dateiname"",R[-15]C[-4]))-FIND(""["",CELL(""Dateiname"",R[-15]C[-4]))-1),10),6)"
' In feste Werte umwandeln
With Range("Tabelle1[test]")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = True
Range("E17").Select
End Sub
Zum Ende des Codes habe ich E17 wählen lassen, damit die Markierung der Spalte weggeht. Kann man dieses Select umgehen oder ist es an dieser Stelle ok?
VG
Kisska
Anzeige
AW: wie select hier umgehen?
26.11.2017 16:20:44
Gerd
Hallo Kisska,
es gibt ein paar wenige Fälle, in denen Select Sinn macht oder notwendig ist.
Deiner ist so einer.
Application.CutCopyMode = False leert den Zwischenspeicher.
Diese Codezeile nach der Paste-Aktion reicht.
Gruß Gerd
AW: wie select hier umgehen?
26.11.2017 18:27:57
Kisska
Hi Gerd,
danke für die Aufklärung!
Ich habe mich in meinem Code verschrieben: statt "Application.ScreenUpdating" habe ich den Befehl
"Application.CutCopyMode" einkopiert
Aber "Application.CutCopyMode" nach Paste-Aktion zu setzen ist tatsächlich eine gute Idee, dankeschön!
VG
Kisska
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formeln in Werte umwandeln in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Formel automatisch in einen Wert umzuwandeln, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und gehe zu der Tabelle, in der du die Formeln umwandeln möchtest.

  2. Markiere die Zellen, die die Formeln enthalten, die du in Werte umwandeln möchtest.

  3. Verwende das VBA-Makro. Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code ein:

    Sub FormelnInWerteUmwandeln()
       With Tabelle1.UsedRange
           .Value = .Value
       End With
    End Sub
  4. Führe das Makro aus. Dadurch werden alle Formeln im benutzten Bereich in feste Werte umgewandelt.

Wenn du nur eine bestimmte Spalte umwandeln möchtest, kannst du den Code entsprechend anpassen:

Sub FormelnInWerteUmwandeln()
    With Tabelle1.Range("A1:A10") ' Beispiel für Spalte A von Zeile 1 bis 10
        .Value = .Value
    End With
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"

    • Ursache: Der Bereich, den du angibst, ist ungültig oder existiert nicht.
    • Lösung: Überprüfe den angegebenen Bereich und stelle sicher, dass er korrekt ist.
  • Fehler: Formeln werden nicht umgewandelt

    • Ursache: Du hast das Makro möglicherweise nicht korrekt ausgeführt.
    • Lösung: Stelle sicher, dass du das Makro im richtigen Arbeitsblatt ausführst und dass das Blatt aktiv ist.

Alternative Methoden

Es gibt verschiedene Wege, um Excel-Formeln in Werte umzuwandeln, ohne VBA zu verwenden:

  1. Kopieren und Einfügen:

    • Markiere die Zellen mit den Formeln.
    • Drücke Strg + C, um sie zu kopieren.
    • Klicke mit der rechten Maustaste in die Zielzelle und wähle "Inhalte einfügen" > "Werte".
  2. Verwendung von Funktionen:

    • Du kannst auch Funktionen wie WERT() verwenden, um das Ergebnis einer Formel in einen Wert umzuwandeln, jedoch ist dies weniger direkt.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Formeln in Werte umwandeln kannst:

  • Um eine gesamte Spalte mit Formeln in feste Werte umzuwandeln:

    Sub AlleFormelnInWerteUmwandeln()
      With Tabelle1.Columns("A")
          .Value = .Value
      End With
    End Sub
  • Wenn du nur die Formelergebnisse in eine andere Spalte umwandeln möchtest:

    Sub FormelnInWerteUmwandeln()
      Range("B1").Value = Range("A1").Value ' Überträgt den Wert von A1 nach B1
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False zu Beginn deines Makros, um die Geschwindigkeit zu erhöhen, und setze es am Ende wieder auf True.

  • Vermeide Select und Activate, um deinen Code schneller und effizienter zu machen. Du kannst direkt auf die Zellen zugreifen, wie in den obigen Beispielen gezeigt.

  • Wenn du viele Formeln in einem großen Arbeitsblatt hast, erwäge die Verwendung von Tabelle1.UsedRange, um alle Formeln auf einmal zu konvertieren.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Formel in einen festen Wert umwandeln, ohne VBA zu verwenden?
Du kannst die Formel kopieren und dann "Inhalte einfügen" > "Werte" auswählen.

2. Was ist der Unterschied zwischen .Value und .Formula in VBA?
.Value gibt den aktuellen Wert einer Zelle zurück, während .Formula die Formel selbst zurückgibt.

3. Gibt es eine Möglichkeit, alle Formeln in einem gesamten Excel-Dokument in Werte umzuwandeln?
Ja, du kannst ein VBA-Makro erstellen, das den gesamten UsedRange durchläuft und alle Formeln in Werte umwandelt.

4. Wie kann ich sicherstellen, dass meine Daten nach dem Umwandeln korrekt sind?
Es ist hilfreich, eine Sicherungskopie deiner Datei zu erstellen, bevor du große Änderungen vornimmst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige