Excel VBA: Text addieren

Hallo Experten,
ich habe eine Tabellen in einen worksheet:

 │ A │ B │ C │ 
───┼──────┼──────┼──────┤
 2 │ 4,44 │ 0,38 │ 4,82 │ 
 3 │ 4,02 │ 2,26 │ 6,28 │ 
 4 │ 6 │ 4,4 │ 10,4 │ 
 5 │ 3,99 │ 2,55 │ 6,54 │ 
 6 │ 4,74 │ 0,35 │ 5,09 │ 
 7 │ 5,02 │ 1,03 │ 6,05 │ 
 8 │ 1,81 │ 0,53 │ 2,34 │ 
 9 │ 3,47 │ 0,53 │ 4 │ 
10 │ 3,76 │ 3,15 │ 6,91 │ 
11 │ 3,65 │ 0,64 │ 4,29 │ 
12 │ 2,93 │ 2,29 │ 5,22 │ 
───┴──────┴──────┴──────┘
Tabellendarstellung erreicht mit dem Code in [FAQ:2363](/t/faq/9292363)

das lese ich in ein Array ein und will die werte in einen einen anderern Worksheet addieren

wksAktuell.Cells(i, constName + 1).Value = wksAktuell.Cells(i, constName + 1).Value + arRevenTab(j, 1)
wksAktuell.Cells(i, constName + 2).Value = wksAktuell.Cells(i, constName + 2).Value + arRevenTab(j, 2)
wksAktuell.Cells(i, constName + 3).Value = wksAktuell.Cells(i, constName + 2).Value + arRevenTab(j, 3)

Leider fasst er die Daten als Text auf und dann kommt das bei raus:

 │ L │ M │ N │ 
───┼─────┼──────┼──────────┤
24 │ 5 │ 3,65 │ 3,654,29 │ 
25 │ 6 │ 4,74 │ 4,745,09 │ 
26 │ 7 │ 4,02 │ 4,026,28 │ 
27 │ │ │ │ 
28 │ 6 │ 3,99 │ 3,996,54 │ 
29 │ 3 │ 3,87 │ 3,875,95 │ 
30 │ 5 │ 3,76 │ 3,766,91 │ 
31 │ 5 │ 3,47 │ 3474,00 │ 
32 │ 9 │ 4,44 │ 4,444,82 │ 
33 │ 1 │ 1,75 │ 1,751,91 │ 
───┴─────┴──────┴──────────┘

Tabellendarstellung erreicht mit dem Code in [FAQ:2363](/t/faq/9292363)

Bitte besonders auf die N Spalte achten!

Kann man das irgendwie erreichen, dass an stellen von
N24: 3,654,29 als Ergebnis 7,94 steht (was ich eigentlich beabsichtigte)
Nein anders gefragt. Wie erreiche ich das?

Vielen Dank für eure Mühe
Winter

das lese ich in ein Array ein und will die werte in einen
einen anderern Worksheet addieren
Leider fasst er die Daten als Text auf und dann kommt das bei

Kann man das irgendwie erreichen, dass an stellen von
N24: 3,654,29 als Ergebnis 7,94 steht (was ich eigentlich
beabsichtigte)

Hi Winter,

probiers mal so:

With wksAktuell
 .Cells(i, constName + 1).Value = CInt(.Cells(i, constName + 1).Value) + arRevenTab(j, 1)
 .Cells(i, constName + 2).Value = CInt(.Cells(i, constName + 2).Value) + arRevenTab(j, 2)
 .Cells(i, constName + 3).Value = CInt(.Cells(i, constName + 2).Value) + arRevenTab(j, 3)
End With

Wenn das ncht reicht dann den hinteren Ausdruck auch noch in Cint() einhüllen.

Altenativ vorher alle Werte in Zahlen wandeln, sie scheinen als Text formatiert zu sein.

Gruß
Reinhard

Hallo Winter,

'von arRevenTab(j, 1) explizit den Wert nehmen ...Value
wksAktuell.Cells(i, constName + 1).Value =
wksAktuell.Cells(i, constName + 1).Value + arRevenTab(j, 1).Value

'ggfs. den imhalt explizit "berechnen" in eine Zahl umwandeln
val(arRevenTab(j, 1).Value)

mfg

Dirk.Pegasus

Hallo Winter,

'von arRevenTab(j, 1) explizit den Wert nehmen …Value

'ggfs. den imhalt explizit „berechnen“ in eine Zahl umwandeln
val(arRevenTab(j, 1).Value)

Hallo Dirk,
danke für Deine Antwort.
leider funktioniert das bei mir nicht arReventab(j,i).value kommt eine Kompilerfehlermeldung. „Ungültiger Bezeichner“
Ich wandel um, mit CDbl, danke.
Grüße
Winter

Hi Winter,

probiers mal so:

With wksAktuell
.Cells(i, constName + 1).Value = CInt(.Cells(i, constName +
1).Value) + arRevenTab(j, 1)
.Cells(i, constName + 2).Value = CInt(.Cells(i, constName +
2).Value) + arRevenTab(j, 2)
.Cells(i, constName + 3).Value = CInt(.Cells(i, constName +
2).Value) + arRevenTab(j, 3)
End With

Wenn das ncht reicht dann den hinteren Ausdruck auch noch in
Cint() einhüllen.

Hallo Reinhard,

Danke
mit Cdbl funktioniert es dann. (Nachdem ich mich gewundert hatte warum 6,31+6,31 = 12,31 ergibt :wink: - das kommt davon, wenn man blind kopiert.
Und ich habe zuvor ncoh in der Hilfe nachgeschaut, was Cint macht. Wandelt in Integer um!)

Altenativ vorher alle Werte in Zahlen wandeln, sie scheinen
als Text formatiert zu sein.

Sag nicht, dass Du meinst mit Format-Zellen Das wäre zu einfach!

Grüße
Winter

Hallo Winter,

mit Cdbl funktioniert es dann. (Nachdem ich mich gewundert
hatte warum 6,31+6,31 = 12,31 ergibt :wink: - das kommt davon,
wenn man blind kopiert.
Und ich habe zuvor ncoh in der Hilfe nachgeschaut, was Cint
macht. Wandelt in Integer um!)

Sorry, hab ich gepennt.

Altenativ vorher alle Werte in Zahlen wandeln, sie scheinen
als Text formatiert zu sein.

Sag nicht, dass Du meinst mit Format-Zellen Das wäre zu
einfach!

In eine beliebige freie Zelle eine 1 schreiben, Strg+C, dann die fraglichen Zellbereiche markieren, Bearbeiten–InhalteEinfügen–Multiplizieren.

Gruß
Reinhard

Hallo Reinhard:

Sorry, hab ich gepennt.

Sorry so meinte ich das nicht.
Habe mich über mich selbst geärgert.
MS-HIlfe: CInt - Wandelt in Integer um.
Ich: cool wandelt in Integer um! Genau das was ich brauche
Code geändert ausprobiert. Mich gewundert:Warum schneidet es nach dem Komma ab? ahh Wandelt in Integer um.

und _ICH_ finde es besser so. So weiß ich was die Cint und Cdbl funktion ist und werde sie da nächste mal anwenden ohne Euch zu „belästigen“

In eine beliebige freie Zelle eine 1 schreiben, Strg+C, dann
die fraglichen Zellbereiche markieren,
Bearbeiten–InhalteEinfügen–Multiplizieren.

Das geht doch auch einfacher? mit CTRL+1 und dann Zahl aus wählen?
Oder?
Grüße
Winter

Grüezi Winter

In eine beliebige freie Zelle eine 1 schreiben, Strg+C, dann
die fraglichen Zellbereiche markieren,
Bearbeiten–InhalteEinfügen–Multiplizieren.

Das geht doch auch einfacher? mit CTRL+1 und dann Zahl aus
wählen?

Nein, da irrst Du dich leider.
Excel zeigt sich bisweilen äusserst störrisch wenn es darum geht, Zahlen die als Text vorliegen in ‚echte‘ Zahlen umzuwandeln. Auch wenn nach dem Umformatieren das Format ‚Zahl‘ angezeigt wird, muss dies noch keine Veränderung gebracht haben. In aller Regel müssen dann die Zellen gezwungen werden, die Werte neu einzutragen.

Das kann mit der Multiplikations-Methoge geschehen, die Reinhard dir vorgeschlagen hat.
Sehr gute Erfahrungen habe ich aber auch mit dem folgenden Vorgehen gemacht:

  • Spalte markieren
  • Format ‚Standard‘ oder ‚Zahl‘ vergeben
    (auch wenn das schon so ausgegeben werden sollte)
  • (bei weiterhin markierter Spalte) Menü: ‚Daten‘
  • Text in Spalten
  • [Fertig stellen]

Führe dies für jede Spalte durch, dann sind garantiert echte Zahlen in den Zellen.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Thomas,

Das kann mit der Multiplikations-Methoge geschehen, die
Reinhard dir vorgeschlagen hat.

auf die Multiplikationsmethode kann man ja ggfs. noch mit Ausprobieren kommen, einfacah probieren den Text „4711“ mit 1 malnehmen. wenn man zuvor stundenlang fassungslos alles Mögliche probiert hat Excel davon zu überzeugen daß wenn da 4711 in einer Zelle ist man bitteschön auch damit rechnen möchte.

Das wäre/ist für mich noch nachvollziehbar, grad wenn man aus der Programmierung her was von automatischer Typumandlung gelesen hat.

Analog dazu KÖNNTE man mit Kenntnis wie Excel mit Datümern umgeht darauf kommen einfach mal so einen Datumswert durch 24 oder 36000 o.ä. zu teilen…

Sehr gute Erfahrungen habe ich aber auch mit dem folgenden
Vorgehen gemacht:

  • Spalte markieren
  • Format ‚Standard‘ oder ‚Zahl‘ vergeben
    (auch wenn das schon so ausgegeben werden sollte)
  • (bei weiterhin markierter Spalte) Menü: ‚Daten‘
  • Text in Spalten
  • [Fertig stellen]

Führe dies für jede Spalte durch, dann sind garantiert echte
Zahlen in den Zellen.

Okay, oben sagte ich „alles Mögliche probiert“, aber das ist ugs. gesehen nicht ernst zu nehmen. Wie du weißt trau ich ja MS alles zu, aber auf die Idee, um eine „Zahlen als Text“-Spalte in Zahlen zu wandeln käme ich jetzt nicht auf die Idee, die Datei auszudrucken, oder eine Zweitdatei zu öffnene. Würde ich keinen Sinn drin sehen daß das was bringt.

Nun muß das ein Anderer anders gesehen haben, er hat sich die Hilfe zu „Text in Spalten“ durchgelesen:

*******************************************************************
Aufteilen von Text auf mehrere Spalten
Markieren Sie den Zellbereich mit den Textwerten.
Der Bereich kann eine beliebige Anzahl von Zeilen, aber nicht mehr als eine Spalte umfassen.

Klicken Sie im Menü Daten auf Text in Spalten.

Folgen Sie den Anweisungen des Text-Assistenten, um festzulegen, wie der Text in Spalten aufgeteilt werden soll.
************** Quelle: Excel Hilfe**********************************

Dann hat er sich gedacht, genau, das isses, sehr gut beschrieben, damit kann man „Textzahlen“ in Zahlenwerte wandeln :smile:)

Und genau darauf KANN man nicht kommen *denk* Ich schätze da hat sich mal einer schwer verklickt und war baff als auf einmal seine Textzahlen Zahlen waren.
Seitdem geistert diese Lösung durchs Internet…

Sehe ich da irgendwas, como siempre *gg*, falsch!?

Und, fußballmäßig, ihr habts schon hinter euch, wir erst am Montag.
Es wäre genial wenn Holland oder Frankreich für uns am Montag gegen Österreich spielen würden, denn die haben beide Verteidigung, Mittelfeld und Angriff. Wir haben die Mimöschen die es trotzdem wagten überhaupt gegen Kroatien auf den Platz zu gehen *sniff*

Gruß
Reinhard


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Reinhard

Sehr gute Erfahrungen habe ich aber auch mit dem folgenden
Vorgehen gemacht:

  • Spalte markieren
  • Format ‚Standard‘ oder ‚Zahl‘ vergeben
    (auch wenn das schon so ausgegeben werden sollte)
  • (bei weiterhin markierter Spalte) Menü: ‚Daten‘
  • Text in Spalten
  • [Fertig stellen]

Okay, oben sagte ich „alles Mögliche probiert“, aber das ist
ugs. gesehen nicht ernst zu nehmen. Wie du weißt trau ich ja
MS alles zu, aber auf die Idee, um eine „Zahlen als
Text“-Spalte in Zahlen zu wandeln käme ich jetzt nicht auf die
Idee, die Datei auszudrucken, oder eine Zweitdatei zu öffnene.
Würde ich keinen Sinn drin sehen daß das was bringt.

Dann hat er sich gedacht, genau, das isses, sehr gut
beschrieben, damit kann man „Textzahlen“ in Zahlenwerte
wandeln :smile:)

Und genau darauf KANN man nicht kommen *denk* Ich schätze da
hat sich mal einer schwer verklickt und war baff als auf
einmal seine Textzahlen Zahlen waren.
Seitdem geistert diese Lösung durchs Internet…

Sehe ich da irgendwas, como siempre *gg*, falsch!?

Ja ich denke schon :wink:

Die Lösung geistert nicht, sondern hat durchaus ihre realen Hintergründe.

Mit ‚Text in Spalten‘ werden Inhalte in (meist nebenstehene) Zellen geschrieben, direkt und sauber.
Dass man das nun nutzen kann um schnell und unkompliziert eine Formatumwandlung durchzufürhren und halt nur eine Spalte bearbeitet ohne die Inhalte aufzutrennen liegt da dann auf der Hand - IMO.

Probiere es aus - es funktioniert absolut zuverlässig und sicher, ansonsten würde ich nicht dazu beitragen, dass die Lösung durchs Internte ‚geistert‘ :wink:

Und, fußballmäßig, ihr habts schon hinter euch, wir erst am
Montag.
Es wäre genial wenn Holland oder Frankreich für uns am Montag
gegen Österreich spielen würden, denn die haben beide
Verteidigung, Mittelfeld und Angriff. Wir haben die Mimöschen
die es trotzdem wagten überhaupt gegen Kroatien auf den Platz
zu gehen *sniff*

Hi Hi :smile:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Thomas,

Mit ‚Text in Spalten‘ werden Inhalte in (meist nebenstehene)
Zellen geschrieben, direkt und sauber.
Dass man das nun nutzen kann um schnell und unkompliziert eine
Formatumwandlung durchzufürhren und halt nur eine Spalte
bearbeitet ohne die Inhalte
aufzutrennen liegt da dann auf der Hand - IMO.

Auf meiner Hand nicht *gg* Wenn ich die Zahl 3,14 als Text in A1 habe und wollte die 3 und die 14 getrennt haben, ja dann käme ich evtl. auf die Idee es mit „Text in Spalten“ zu probieren und das Komma als Trennzeichen zu nehmen.
Aber der Bezug zwischen „Text in Spalten“ und der Umwandlung Textzahl in Zahl erschließt sich mir nicht.
Ein Feature „Text als Zahlwert in Spalten“ würde es m.E. treffen.

Probiere es aus - es funktioniert absolut zuverlässig und
sicher, ansonsten würde ich nicht dazu beitragen, dass die
Lösung durchs Internte ‚geistert‘ :wink:

Na siehste, es geistert doch :smile:
„Absolut zuverlässig“ ? Na, das reizt mich doch mal nach paar Zahlen zu forschen wo es nicht klappt, mal nachlesen wie das mit den irrealen Zahlen war, oder sowas 3,14 * 10^3,14 oder eine 32768 Zeichen lange Textzahl, bin dann gespannt wie Excel dann bei der Umwandlung zur Zahl noch das Vorzeichenbit reinquetschen will *gg*

Gruß
Reinhard

Grüezi Reinhard

Mit ‚Text in Spalten‘ werden Inhalte in (meist nebenstehene)
Zellen geschrieben, direkt und sauber.
Dass man das nun nutzen kann um schnell und unkompliziert eine
Formatumwandlung durchzufürhren und halt nur eine Spalte
bearbeitet ohne die Inhalte
aufzutrennen liegt da dann auf der Hand - IMO.

Auf meiner Hand nicht *gg* Wenn ich die Zahl 3,14 als Text in
A1 habe und wollte die 3 und die 14 getrennt haben, ja dann
käme ich evtl. auf die Idee es mit „Text in Spalten“ zu
probieren und das Komma als Trennzeichen zu nehmen.
Aber der Bezug zwischen „Text in Spalten“ und der Umwandlung
Textzahl in Zahl erschließt sich mir nicht.

Das muss es nicht zweingend; es klappt dennoch :wink:

Ein Feature „Text als Zahlwert in Spalten“ würde es m.E.
treffen.

Mit der Fehlerverfolgung gibt es das ja ab xl2002 auch.
Es steht also frei zu nutzen wonach man Lust hat.

Probiere es aus - es funktioniert absolut zuverlässig und
sicher, ansonsten würde ich nicht dazu beitragen, dass die
Lösung durchs Interet ‚geistert‘ :wink:

Na siehste, es geistert doch :smile:
„Absolut zuverlässig“ ? Na, das reizt mich doch mal nach paar
Zahlen zu forschen wo es nicht klappt, mal nachlesen wie das
mit den irrealen Zahlen war, oder sowas 3,14 * 10^3,14 oder
eine 32768 Zeichen lange Textzahl, bin dann gespannt wie Excel
dann bei der Umwandlung zur Zahl noch das Vorzeichenbit
reinquetschen will *gg*

…dir steht der Sinn heute wohl nach pöbeln, was…? :wink:

Auch Text in Spalten versagt da wo die Zahlen nicht mehr als solche in Excel zu verwalten sind; genau wie alle anderen Methoden auch.

Konstruierte Beispiele die einen Vorschlag ‚ad absurdum‘ führen gibt es immer, sie selbst sind aber meines Erachtens selbst ‚ad absurdum‘, da in der täglichen Arbeit kaum je relevant.

Die geschilderte Methode ist einfach, für jeden anwendbar und schnell durchzuführen (dasselbe gilt auch für andere Methoden).


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -