Microsoft Excel

Herbers Excel/VBA-Archiv

Zahlen mit Leeerstellen in Zellen aufteilen | Herbers Excel-Forum


Betrifft: Zahlen mit Leeerstellen in Zellen aufteilen von: Dieter(Drummer)
Geschrieben am: 22.01.2012 10:11:37

Guten Morgen VBA Spezialisten,

im aktiven Sheet stehen in der Zelle B28 (Zellformat: Standard) 6 zweistellige Zahlen, die zwischen den Zahlen jeweils 2 Leerstellen haben. Die erste 2stellige Zahl soll in die B26, die Zweite 2stellige Zahl in C26 usw ... (Zellformat: Standard).

Nun suche ich ein Makro, dass die Zahlen - ohne Leerstellen - in die die Zellen B26, C26, D26, E26, F26 und G26 einfügt. Das Makro löse ich dann mit einem Button aus.

Musterdatei anbei: https://www.herber.de/bbs/user/78545.xls

Freut mich, wenn ich eine Hilfe bekomme und Danke für's drum kümmern.

Gruß, Dieter(Drummer)

  

Betrifft: AW: Zahlen mit Leeerstellen in Zellen aufteilen von: JoWe
Geschrieben am: 22.01.2012 10:26:22

Hallo Dieter,
so vllt:

Sub Makro1()
    'aufgezeichnet mit dem Makrorekorder, das kannst Du auch
    Range("B28").Select
    Application.CutCopyMode = False
    Selection.TextToColumns Destination:=Range("B28"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)),  _
_
        TrailingMinusNumbers:=True
    Range("B28:G28").Select
    Selection.Copy
    Range("B26").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Gruß
Jochen


  

Betrifft: AW: Zahlen mit Leeerstellen in Zellen aufteilen von: Dieter(Drummer)
Geschrieben am: 22.01.2012 10:36:49

Hi Jochen,

Danke für schnelle Rückmeldung. Bei deiner Aufzeichnung (Makro1) wird das Makro unterbrcohen mit "Kompilierungsfehler und diese Zrilen werden markiert:

Selection.TextToColumns Destination:=Range("B28"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)),

Die Formel von Uwe ist wohl schon eine gute Lösung und funktioniert.

Danke für deine Hilfe und Gruß
Dieter(Drummer)


  

Betrifft: AW: Du hast den Code fehlerhaft kopiert oT von: JoWe
Geschrieben am: 22.01.2012 10:44:00




  

Betrifft: AW: Hast recht, Jochen ... mein Fehler! von: Dieter(Drummer)
Geschrieben am: 22.01.2012 10:52:00

Hi Jochen,

Sorry! War meine Fehler. Es funktioniert prima, auch bei 1stelligen Zahlen. Es mit dem Makrorekorder zu probieren, darauf war ich garnicht gekommen. War wohl zu früh für mich ;-).

Danke für deine Hilfe und Gruß
Dieter(Drummer)


  

Betrifft: AW: Zahlen mit Leeerstellen in Zellen aufteilen von: Uwe (:o)
Geschrieben am: 22.01.2012 10:26:39

Hallo Dieter,
warum nicht per Formel?
In B26 diese Formel:
=TEIL($B$28;SPALTE(A1)*4-3;2)
und nach rechts kopieren.
Wäre das nichts für Dich?

Gruß
Uwe
(:o)


  

Betrifft: AW: Danke Uwe. Prima Formellösung von: Dieter(Drummer)
Geschrieben am: 22.01.2012 10:38:57

Hi Uwe,

Danke für deine schnelle und gut funtionierende Formellösung.

Mit Gruß
Dieter(Drummer)


  

Betrifft: AW: Uwe, noch ein Problem ... von: Dieter(Drummer)
Geschrieben am: 22.01.2012 10:44:18

... hatte nicht bedacht, dass auch mal 1stellige und/oder 2stellige Zahlen (aber insgesamt immer 6 Zahlen) in B6 stehen können. Es sind aber immer 2 Leerstellen dazwischen.

Geht das auch per Formel? Wenn ja wie?

Gruß
Dieter(Drummer)


  

Betrifft: Das hatte ich erwartet ;o) von: Matthias L
Geschrieben am: 22.01.2012 11:03:42

Hallo

Warum schreibst Du denn erst:
Zitat
im aktiven Sheet stehen in der Zelle B28 (Zellformat: Standard) 6 zweistellige Zahlen
und formatierst zweistellige auch noch fett ;o)

Du solltest besser mal posten, wie Du B28 mit dem String füllst, denn das könnte man sicher dort gleich mit erledigen.

Übrigens wäre eine sortierte Darstellung ansehlicher ;-)

Gruß Matthias


  

Betrifft: AW: Errare humanum est ... von: Dieter(Drummer)
Geschrieben am: 22.01.2012 11:15:47

... Irren ist menschlich ...

hast recht, Matthias.

In B28 werden die Zahlen aus der Lottoseite kopiert und werden also in B28 aus der Zwischenablage eingefügt. Ob die Zahlen (6 Zahlen können mal 1stellig oder auch 2stellig sein, aber immer 2 Leerstellen dazwischen) direkt in B26 bis G26 eingefügt werden können, hatte ich nicht bedacht.

Zahlen können also so oder so aussehen: 3 15 17 19 23 43 oder 2 4 19 21 22 25. Alle Kombinationen zwischern 1 und 49 sind möglich aber immer in aufsteigender Folge.

Hatte nicht bedacht, das es so komplizierter wird. Ich sollte vor dem Posten das Problem besser Vordenken.

Freut mich, wenn es eine Lösung gibt.

Gruß
Dieter(Drummer)


  

Betrifft: AW: Errare humanum est ... von: Christian
Geschrieben am: 22.01.2012 11:21:19

hallo Dieter,
dann könntest du den String der "Lotto-Seite" auch gleich splitten und in deine Felder eintragen (ich gehe davon aus, dass du die Web-Seite per VBA ausliest.

Zu deiner Frage:

Option Explicit

Sub TestIt()
    Cells(26, 2).Resize(, 6) = Split(Replace(Cells(28, 2), "  ", " "))
End Sub

Gruß
Christian


  

Betrifft: Genau so ;o) kwT von: Matthias L
Geschrieben am: 22.01.2012 11:24:31




  

Betrifft: AW: Genau so ;o) kwT von: Dieter(Drummer)
Geschrieben am: 22.01.2012 11:52:50

Hallo Christian,

Danke für dein Makro. In der Kürze liegt die Würze und es funktioniert prima!

Die Lott-Webiste lese ich nicht per VBA aus, dafür fehlt mir die Qualifikation.

Danke nochmal und Gruß
Dieter(Drummer


  

Betrifft: excelformeln von: Erich G.
Geschrieben am: 22.01.2012 11:26:33

Hi Dieter,
sieh mal http://www.excelformeln.de/formeln.html?welcher=326

Das steht das (leicht abgewandelt):

 ABCDEFG
212 3 45 6 78 9123456789

Formeln der Tabelle
ZelleFormel
B2=1*TEIL(LINKS(" "&$A$2;FINDEN("##";WECHSELN(" "&$A$2;" ";"##";SPALTE(B1))&"##")-1); FINDEN("##";WECHSELN(" "&$A$2;" ";"##";SPALTE(A1))&"##")+1;99)
C2=1*TEIL(LINKS(" "&$A$2;FINDEN("##";WECHSELN(" "&$A$2;" ";"##";SPALTE(C1))&"##")-1); FINDEN("##";WECHSELN(" "&$A$2;" ";"##";SPALTE(B1))&"##")+1;99)

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Danke Erich ... von: Dieter(Drummer)
Geschrieben am: 22.01.2012 11:58:26

... ich habe mich für die Lösung von MatthiasL entschieden. Sie ist knapp, kurz und funktioniert prima.

Danke dir für deine Hilfe und

Gruß
Dieter(Drummer)


  

Betrifft: Du meinst sicher die Lösung v. Christian! ;o) kwT von: Matthias L
Geschrieben am: 22.01.2012 12:00:50




  

Betrifft: AW: Du hast Recht ... Christians ist ok ... von: Dieter(Drummer)
Geschrieben am: 22.01.2012 12:06:55

... Sorry, Lösung von Christian ist die, die ich nehme.

Noch einen schöne Sonntag und allen meinen Dank für die erfolgreichen Hilfen.

Gruß
DieterDrummer


  

Betrifft: passt schon - ist auch deine Lösung ... von: Christian
Geschrieben am: 22.01.2012 12:36:48

... bin dir ja "ins Wort gefallen", bzw in den Thread... sorry about that.

@Dieter: wenn du ggf. Leerzeichen insbesondere am Anfang oder am Ende abfangen willst - beim _
manuellen Kopieren von 'ner Web-Seite kann das ja schnell mal passieren, dann schneide diese in _
der Zelle "Cells(28, 2)" mit "Trim" ab, also zB:


Option Explicit
  
Sub TestIt()
    Cells(26, 2).Resize(, 6) = Split(Replace(Trim(Cells(28, 2)), "  ", " "))
End Sub

und wenn die Werte als Zahlen und nicht als String benötigst, dann zB so:
Sub TestIt_v2()
    With Cells(26, 2).Resize(, 6)
        .Value = Split(Replace(Trim(Cells(28, 2)), "  ", " "))
        .Value = .Value
    End With
End Sub

Grüße
Christian


  

Betrifft: AW: Danke Christian ... von: Dieter(Drummer)
Geschrieben am: 22.01.2012 12:56:29

... das lege ich mir mal in mein Arbeitsarchiv.

Gruß und einen schönen Sonntag
Dieter(Drummer)


  

Betrifft: AW: @Christian von: Dieter(Drummer)
Geschrieben am: 23.01.2012 18:31:23

Hi Christian,

habe deine Makrolösung 2 genoomen, da ich die Werte als zahl benötige und nicht als String. Es hat mit Bedingten Formaten zu tun, da die Zellen mit den gezogenen Zahlen (innerhalb der 12 Tipps) gelb markiert werden.

Danke dir nochmal für deine Lösung.

Gruß
Dieter(Drummer)


Beiträge aus den Excel-Beispielen zum Thema "Zahlen mit Leeerstellen in Zellen aufteilen"