Excelproblem: Umwandeln von Text in Werte

    • Offizieller Beitrag

    Hallo liebe Foristen,

    heute habe ich mal eine Frage, die für erfahrene Exceler sicher simpel ist, an der ich mich aber festgefahren habe.


    Ich habe öfter mal Datenlogger auszuwerten, die nur Textdateien ausgeben.


    Das Ergebnis von Spannungen sieht dann innerhalb der gleichen Spalte so aus:


    21.987V und

    0.002mV


    Will ich nun diese Zellwerte weiterberechnen oder in Diagrammen verarbeiten, muss ich ewig fummeln, um aus dem Text verwertbare Zahlen zu machen. Erschwerdend ist, das der Logger selbständig zwischen Volt und Millivolt wechselt und statt Komma einen Punkt verewendet.


    • Offizieller Beitrag

    Du kannst Text "abschneiden", d.h. eine gewisse Anzahl von Zeichen aus einer Zelle (entweder von vorne oder von hinten) ausgeben lassen. Dazu erstmal die letzten zwei Zeichen ausgeben ( rechts(Zelle;2) ). Du kannst das Ergebnis dann nutzen um mit Hilfe der Anzahl der Zeichen insgesamt ( LÄNGE(Zelle))und einer wenn() Formel entweder das "V" oder das "mV" abzuschneiden ( links(Zelle;Länge(Zelle)-wenn(Zelle="mV";2;1)). Das so erhaltene Ergebnis kannst Du dann in von Text in Zahl konvertieren ( ZAHLENWERT(Text;[Dezimaltrennzeichen];[Gruppentrennzeichen]); je nach dem, ob du oben "V" oder "mV" erhalten hast, kannst du dann die Zahl mittels wenn() Funktion umrechnen.

    Der gesunde Verstand ist die bestverteilte Sache der Welt, denn jedermann meint, damit so gut versehen zu sein, dass selbst diejenigen, die in allen übrigen Dingen sehr schwer zu befriedigen sind, doch gewöhnlich nicht mehr Verstand haben wollen, als sie wirklich haben. ~ René Descartes

  • Ich habe gerade kein excell zur Verfügung, deshalb mal openoffice


    =TEIL(A1;LÄNGE(A1)-6;5)


    Könnte in excell etwa lauten

    =middle(A1;len(a1)-6;5)


    Das Ergebnis sollte dann der string am Ende ohne das "V" sein.

    Verflucht sei, wer einen Blinden irren macht auf dem Wege!

    5.Mose 27:18

  • gerade in Excel probiert:

    =TEIL(A1;LÄNGE(A1)-6;5)

    sollte auch in Excel wie gewünscht funktionieren.

    Verflucht sei, wer einen Blinden irren macht auf dem Wege!

    5.Mose 27:18

  • Wenn die Werte tatsächlich immer 7stellig sind, kann man es sich leichter machen:

    (Text steht in Spalte A, Formel in Spalte B kopieren):


    =WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;7);5);LINKS(RECHTS(A1;7);6));".";","))


    Allerdings hast Du so nur die nackten Zahlen. Musst Du noch von Volt in mV umrechnen und irgendwelche Summen bilden? Von Strom hab ich keine Ahnung. Wie ist die Umrechnungszahl? 1000?

  • Also wenn es am Ende so aussehen soll:


    [eimage='618','small'][/eimage]



    wäre das dann das hier, aber nur, wenn tatsächlich die Werte immer 7 stellig ausgegeben werden.:


    =WENN(RECHTS(A1;2)="mV";WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;7);5);LINKS(RECHTS(A1;7);6));".";","))/1000;WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;7);5);LINKS(RECHTS(A1;7);6));".";",")))

    • Offizieller Beitrag

    Uff, Danke Euch. Da habe ich eine Menge zu probieren.

    Vorher versuche ich noch dem Logger beizubringen, nicht automatisch die Maßeinheiten zu wechseln. Mir reicht eine Dezimalstelle in Volt. Also

    22,0

    21,8

    0,0

    Das macht die Sache deutlich einfacher.

  • wäre das dann das hier, aber nur, wenn tatsächlich die Werte immer 7 stellig ausgegeben werden.:


    =WENN(RECHTS(A1;2)="mV";WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;7);5);LINKS(RECHTS(A1;7);6));".";","))/1000;WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;7);5);LINKS(RECHTS(A1;7);6));".";",")))

    Die Länge eines Feldes bekommat man mit =LÄNGE(A1). Also noch alle 7er, 6er und 5er ersetzen dann passt es auch mit variabler Länge. Ich würde da aber ein paar Zwischenschritte spendieren, so eine Formel versteht doch keiner mehr.

    • Offizieller Beitrag

    Dem Datenlogger kann ich das automatische Umschalten leider nicht abgewöhnen:


    Es sind also jeweils ein oder zwei Buchstaben abzuschneiden und die fünf bis 6 stelligen Zahlenwerte mit einem Dezimalpunkt in kommagetrennte Zahlenwerte mit gleichem Dezimalsystem umzuwandeln (ob alles in mV oder alles in V ist mir egal).

  • Ausgehend von der Version von Katja kommt dann das raus:

    =WENN(RECHTS(A1;2)="mV";WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;B1);B1-2);LINKS(RECHTS(A1;B1);B1-1));".";","))/1000;WERT(WECHSELN(WENN(RECHTS(A1;2)="mV";LINKS(RECHTS(A1;B1);B1-2);LINKS(RECHTS(A1;B1);B1-1));".";",")))

    Spalte A der umzurechnende Wert,
    Spalte B1=LÄNGE(A1)
    Spalte C obige Formel

  • Die Länge eines Feldes bekommat man mit =LÄNGE(A1). Also noch alle 7er, 6er und 5er ersetzen dann passt es auch mit variabler Länge. Ich würde da aber ein paar Zwischenschritte spendieren, so eine Formel versteht doch keiner mehr.

    Ja, die Längenvariable würde ich wohl auch noch einbauen. Wenn es immer exakt der selbe Vorgang ist und man das ständig braucht, lohnt es sich, einmal eine Formel zu Ende durch zu knobeln und dann hat man für immer Ruhe. Wenn das nur 1x im Monat nötig wird, kann man 3 oder 4 Zwischenschritte in Kauf nehmen.

    Ab davon, verstehen braucht das doch keiner. ;)

    • Offizieller Beitrag

    Ab davon, verstehen braucht das doch keiner.

    Wie meinen?

    Die Aufgabenstellung oder die Formel?


    Wenn es die Aufgabenstellung ist, dann geht es darum, die Werteentwicklung in Diagrammen darzustellen, um Verläufe über die Zeit abzubilden.

    • Offizieller Beitrag

    Ich würde mir die Zeichenfolge V bzw. mV in eine separate Spalte ausgeben lassen um dann die Umrechnung mit einer einfachen wenn() Formel vorzunehmen. Mit ZAHLENWERT() sollte man auch die Punkte und Kommas zur Einheitenteilung und Dezimalteilung in den Griff bekommen.

    Der gesunde Verstand ist die bestverteilte Sache der Welt, denn jedermann meint, damit so gut versehen zu sein, dass selbst diejenigen, die in allen übrigen Dingen sehr schwer zu befriedigen sind, doch gewöhnlich nicht mehr Verstand haben wollen, als sie wirklich haben. ~ René Descartes

  • , lohnt es sich, einmal eine Formel zu Ende durch zu knobeln und dann hat man für immer Ruhe.

    nein, nur solange, wie man nichts dran ändern muss. Aufgeteilt in ein paar zwischenschritte so wie von mir mit der länge und von bauamateur angedeutet wird es wesentlich übersichtlicher, verständlicher und damit wartbarer.

  • Wie meinen?

    Die Aufgabenstellung oder die Formel?

    Ich meinte die Formel.

    Wir haben früher galaktische Excelformeln in diversen Tabellen gebastelt mit Verknüpfen und Verweisen, da schlackern Dir die Ohren. Das hatte Sinn, weil man 1x pro Woche viele neue Werte analysieren musste. Zwischenschritte für mehr Übersichtlichkeit interessieren niemanden mehr, wenn man es 1000x gemacht hat. Genauso sehe ich das hier. Wenn man eine Zeitreihe erstellen will über einen laaaaangen Zeitraum, nervt jeder zusätzliche Zwischenschritt nur. Aber sicher führen viele Wege zum Ziel.

    Für eine korrekte Formel braucht es die Originaldatei in voller Länge, damit man die Formate oder eventuelle Abweichungen mit einkalkulieren kann.

  • für den ersten Schritt hilft

    =TEIL(A1;FINDEN("_";WECHSELN(A1;" ";"_";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))+1;200)


    ergibt dann sowas wie 22.040V oder 0.200mV als Text


    In der nächsten Spalte dann

    =WENN(RECHTS(B1;2)="mV";ZAHLENWERT(LINKS(B1;LÄNGE(B1)-2));ZAHLENWERT(LINKS(B1;LÄNGE(B1)-1)))


    ergibt die Zahlen 22040 oder 200 in mV

    Verflucht sei, wer einen Blinden irren macht auf dem Wege!

    5.Mose 27:18

    • Offizieller Beitrag

    Für eine korrekte Formel braucht es die Originaldatei in voller Länge, damit man die Formate oder eventuelle Abweichungen mit einkalkulieren kann.

    Daran solls nicht scheitern.

    Textdateien lassen sich ja hochladen.

  • die sind beim Einfügen in die Tablle ja schon schön getrennt. Schritt leicht korrigiert reicht dann ja schon.


    =WENN(RECHTS(C1;2)="mV";ZAHLENWERT(LINKS(C1;LÄNGE(C1)-2))/1000;ZAHLENWERT(LINKS(C1;LÄNGE(C1)-1)))

    Verflucht sei, wer einen Blinden irren macht auf dem Wege!

    5.Mose 27:18

  • Man könnte in einem Editor auch vorher den Text passend bearbeiten und Punkte durch Kommas ersetzen, die Vs entfernen lassen usw. Es gibt gute Editoren, die mit entsprechenden Scripts vieles automatisieren können.

    Du musst immer einen Plan haben. Denn wenn Du keinen hast, dann wirst Du Teil eines anderen Planes...

    • Offizieller Beitrag

    =WENN(RECHTS(C1;2)="mV";ZAHLENWERT(LINKS(C1;LÄNGE(C1)-2))/1000;ZAHLENWERT(LINKS(C1;LÄNGE(C1)-1)))

    Genial:thumbsup:

    noch ein "/1000" drangehängt und schon passen die Werte perfekt.

    Vielen Dank, auch den übrigen Tipgebern. Es führen halt viele Wege zum Ziel, aber das war wohl der Kürzeste.


    Meine Excel-Hochzeit war in den 90ern (nach Redabas und Lotus 123). Jetzt bin ich eingerostet.

  • Editoren sind zum editieren von Text da und nicht zum automatischen bearbeiten.

    Was ist mit "Stream Editoren", wie sed? Duerfte man die denn verwenden, mit awk und grep vielleicht noch dazu? Alles gnuplot oder irgendeinem anderen ascichart-programm zur Darstellung vorwerfen.


    Ein ganzes Tabellenkalkulations-Office-Paket anwerfen, ist für die Bearbeitung von paar Datensätzen vielleicht etwas zuviel des guten...

  • Was ist mit "Stream Editoren", wie sed? Duerfte man die denn verwenden, mit awk und grep vielleicht noch dazu? Alles gnuplot oder irgendeinem anderen ascichart-programm zur Darstellung vorwerfen.

    genau so hätte ich es gemacht. Aber eben nicht, wenn das betriebssystem, aus welchen Gründen auch immer, Windows heißt.

    • Offizieller Beitrag

    genau so hätte ich es gemacht. Aber eben nicht, wenn das betriebssystem, aus welchen Gründen auch immer, Windows heißt.

    Ich wußte doch, dass hier die Freaks sitzen. Fühle mich auch schuldig.

    Aber mit fast 70 fange ich nicht mehr mit Linux an. =o

    Danke nochmal :bier: