fabmin
Goto Top

Random.Zeile und Spalte in eine neue Zelle kopieren mit VBS in Excel 2007

Hi alle zusammen face-smile
ich hab mal wieder eine kleine, und für geübte, warscheinlich simple Aufgabe zu lösen.

Situation
Ich habe eine Spalte 'A' mit bspw. einer fortlaufenden Nummer 'a' und eine Spalte 'B' mit einer fortlaufenden Nummer 'b'.

Ergebnis
Ich möchte eine Spalte 'C', welche sich aus A und B folgendermassen zusammensetzt:
A1B1, A1B2, A1B3, ..., A2B1, A2B2, A2B3, ..., AnBn

Weg
Ich nehme mal an es wird über zwei geschaltete for-Schleifen laufen - die äußere zählt von A1 bis An und die innere zählt von B1 bis Bn.
Das Ergebnis AaBb von A1B1 bis AnBn wird dann jeweils in eine Spalte C oder ein neues Tabellenblatt kopiert, allerdings in jeweils eine Zelle pro Ergebnis (bspw. C1=A1B1) - ich nehme mal an per 'print(C1)=A1+B1' ?


Wie Ihr seht verstehe ich relativ wenig von VB und bitte daher um Eure Hilfe.
Ein vollständiges Skript wär natürlich toll face-smile

Danke und Gruß
Fab

Content-ID: 103546

Url: https://administrator.de/contentid/103546

Ausgedruckt am: 24.11.2024 um 16:11 Uhr

bastla
bastla 08.12.2008 um 13:20:26 Uhr
Goto Top
Hallo FaBMiN!

Etwa so:
Sub Combine()
RA = 1
RC = 1
Do While Cells(RA, 1).Value <> ""  
    RB = 1
    Do While Cells(RB, 2).Value <> ""  
        Cells(RC, 3).Value = Cells(RA, 1).Value & Cells(RB, 2).Value
        RB = RB + 1
        RC = RC + 1
    Loop
    RA = RA + 1
Loop
End Sub
Da Du Excel2007 verwendest, habe ich die Prüfung auf einen Überlauf der Spalte C eingespart - sollten es doch mehr als eine Million Kombinationen werden, müsstest Du das berücksichtigen und zB in Spalte D weiter machen ...

Grüße
bastla
FaBMiN
FaBMiN 08.12.2008 um 13:27:36 Uhr
Goto Top
Hey bastla --> baschdlah ;)

vielen Dank!
Ich werde es gleich mal ausprobieren!
FaBMiN
FaBMiN 08.12.2008 um 14:05:11 Uhr
Goto Top
ähhhm... Hi nochmal face-smile
nun haben wir tatsächlich das Problem, dass es mehr als eine Million Datensatze sind :s

Haste da für mich vielleicht noch ne Abfrage? Es sind nämlich ein bissl mehr als 3Mio face-smile
Wär super!

Danke
bastla
bastla 08.12.2008 um 14:40:30 Uhr
Goto Top
Hallo FaBMiN!

Na ja, die paar Zeilen gehen auch noch face-wink:
Sub Combine()
RA = 1
RC = 1
CC = 3 'Ergebnisse ab Spalte C eintragen  
RMax = 1048576 'höchste zu verwendende Zeilennummer  
Do While Cells(RA, 1).Value <> ""  
    RB = 1
    Do While Cells(RB, 2).Value <> ""  
        Cells(RC, CC).Value = Cells(RA, 1).Value & Cells(RB, 2).Value
        RB = RB + 1
        RC = RC + 1
        If RC > RMax Then
            RC = 1
            CC = CC + 1
        End If
    Loop
    RA = RA + 1
Loop
End Sub
Grüße
bastla