hilfdirselbst.ch
Facebook Twitter gamper-media
« « 1 2 3 » »  
JoPo S
Beiträge: 455
6. Okt 2010, 12:29
Beitrag #1 von 35
Bewertung:
(12140 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hi zusammen,

da ich fast keine Ahnung von Excel habe aber dennoch etwas machen muss, brauche ich Hilfe für folgende Aufgabe:

Das Dokument besteht aus einer Spalte mit 100 Einträgen (A 1-100).
Ich brauche aber 10 Spalten (A 1-10, B 11-20, C 21-30, ...) mit je 10 Einträgen.

Es werden aber Dutzende verschiedener Dokumente mit verschieden langer Spalte "A" sein.
Also immer eine lange Spalte umsetzen in 10 Spalten gleicher Länge.

Wie kann ich das automatisiert lösen?

Vielen Dank für Hinweise
Joachim
(Dieser Beitrag wurde von JoPo am 6. Okt 2010, 12:30 geändert)
Top
 
X
bröp
Beiträge: 160
6. Okt 2010, 13:53
Beitrag #2 von 35
Beitrag ID: #453354
Bewertung:
(12094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Joachim

Was mir nicht ganz klar ist, wo die "Ausgabe" sein soll? In einem neuen Tabellenblatt? Oder soll die Tabelle überschrieben werden?

Ausserdem: Haben die Zellen spezielle Formatierungen?

Gruss
Bruno
als Antwort auf: [#453342] Top
 
farbauge p
Beiträge: 824
6. Okt 2010, 16:57
Beitrag #3 von 35
Beitrag ID: #453382
Bewertung:
(12075 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo,

weitere Fragen:

soll es wirklich (A 1-10, B 11-20, C 21-30, ...) sein, das
sähe wie eine Treppe aus, oder vielmehr (A1-10, B1-10, C1-10,...)?

geht es nur um eine quantitative Aufteilung, also stumpf die ersten 10 Werte aus Spalte A in B, die nächsten 10 in C etc.,
oder um eine Auswertung nach Kriterien: "Wenn Schuhgröße > 44, dann Spalte D"?

Wenn bei den weiteren Dokumenten die Spalte A unterschiedliche Längen haben kann:

hat die Einhaltung von genau 10 Spalten Priorität oder die
Einhaltung von 10 Werten je Spalte? Eins geht nur, es sei denn die Spalte A hat genau 100 Werte.

automatisiert geht das nur mit einem Makro, das im persönlichen Makroordner abgelegt und über einen eigenen Button in der Symbolleiste gestartet wird, damit man das ohne Firlefanz schnell wieder auf neue Ausgangsdateien anwenden kann.

Wenn es ganz viele Dateien werden, die so bearbeitet werden sollen, kann man das auch als Stapelverarbeitung skripten und über einen Ordner laufen lassen.

Eigentlich nicht so schwierig, wenn die Fragen geklärt sind und sich herausstellt, dass der Aufwand nicht so groß ist, könnte ich dir das an einem langweiligen Hotelabend mal machen.

Gruß
Peter

edit: Du schreibst, dass du fast keine Ahnung von Excel hast, da wirst du es auch mit Tipps von hier kaum selbst lösen können.
als Antwort auf: [#453342]
(Dieser Beitrag wurde von farbauge am 6. Okt 2010, 16:59 geändert)
Top
 
JoPo S
Beiträge: 455
7. Okt 2010, 15:07
Beitrag #4 von 35
Beitrag ID: #453453
Bewertung:
(12030 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo zusammen,

hier weitere Erklärungen:

die Aufteilung A 1-10, B 11-20, C 21-30, ... wäre Unsinn, stimmt.
Gemeint habe ich A1-10, B1-10, C1-10,...!!!!
Ich hatte lediglich die Zahlen der vorhandenen A-Reihe gelistet. Diese werden in B und C und ... natürlich immer bei 1 beginnend benötigt.

Man kann es als quantitative Aufteilung bezeichnen.
Alle Zeilen aus Spalte A sollen gleichmäßig in 10 Spalten aufgeteilt werden.
Wenn es nicht aufgeht, ist die letzte Zeile nicht bis J(=10) voll, sondern endet z.B. bei C.
So ausgedrückt versteht man es vielleicht besser. Ich auch ;-)

So ein Dokument werde ich 52 mal im Jahr erhalten.

Wenn jemand sich gut auskennt und es für mich als Makro erstellen kann wäre das natürlich schön. Natürlich nicht umsonst.

Salü
Joachim
als Antwort auf: [#453382] Top
 
Klaus79 S
Beiträge: 291
7. Okt 2010, 19:00
Beitrag #5 von 35
Beitrag ID: #453475
Bewertung:
(12003 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Joachim,
Datei anbei ...

Gruß
Klaus
als Antwort auf: [#453453] Top

Anhang:
Aufteilen.xls (42.5 KB)
 
Klaus79 S
Beiträge: 291
8. Okt 2010, 09:16
Beitrag #6 von 35
Beitrag ID: #453520
Bewertung:
(11977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


... und ich sehe gerade, dass noch ein kleiner Fehler darin
steckt: beim zweiten Application.ScreenUpdating muss der
Wert auf True gesetzt werden, also

...
End With
Application.ScreenUpdating = True
...

Gruß
Klaus
als Antwort auf: [#453475] Top
 
JoPo S
Beiträge: 455
8. Okt 2010, 13:03
Beitrag #7 von 35
Beitrag ID: #453547
Bewertung:
(11956 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Klaus,

besten Dank. Das funktioniert ja prima.
Gut dass ich jemanden fragte der sich damit auskennt.
Dass hätte ich nie geschafft.

Salü
Joachim
als Antwort auf: [#453520] Top
 
Klaus79 S
Beiträge: 291
8. Okt 2010, 14:35
Beitrag #8 von 35
Beitrag ID: #453556
Bewertung:
(11950 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Joachim,
Du musst noch etwas ändern. Im Moment macht er die ersten 10 Daten
sowohl in Spalte A als auch in B. Setze im Makro den SPAL-Wert auf 1 ...

SPAL = 1

... dann ist auch das korrekt.

Gruß
Klaus
als Antwort auf: [#453547] Top
 
JoPo S
Beiträge: 455
8. Okt 2010, 15:18
Beitrag #9 von 35
Beitrag ID: #453559
Bewertung:
(11938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hi Klaus,

werde ich ändern. Ist aber kein Problem da ich bei der weiteren Benutzung Spalte A einfach ignorieren kann.

Ich muss jetzt nur noch knobeln, was ich ändern muss wenn mal statt 100 Zeilen z. B. 555 angeliefert werden, oder auch mal 100TSD.
Aber das schaffe ich.

Salü
Joachim
als Antwort auf: [#453556] Top
 
farbauge p
Beiträge: 824
8. Okt 2010, 17:44
Beitrag #10 von 35
Beitrag ID: #453578
Bewertung:
(11912 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo,

ich sollte keine Kritik üben, wenn ich selbst noch keine Zeit hatte, was zu machen, aber:

Ein Nachteil bei diesem Skript ist die Festverdrahtung auf jeweils 10 zu versetzende Werte mit max=100.

Wenn es immer 10 Spalten sein sollen, muss ich aus einer variablen Anzahl mit Hilfe der Modulo-Funktion rausfinden, wie viele Werte in jede Spalte gehören und die restlichen (<10) von links an soweit packen, bis alle versorgt sind.

Ein weiterer Nachteil ist es, das Skript direkt in die Tabelle zu packen. Wie ich schon sagte, es gehört in die Personl.xls
(oder heute Personal.xlsb), und sollte so funktionieren, dass eine Sicherheit eingebaut ist, dass es nicht aus Versehen auf andere Tabellen angewendet werden kann
(z.B. durch Nomenklatur der Dateinamen für die Datendateien, die da kommen.

Entweder ist es eine Anregung, das selbst entsprechend umzubauen oder Joachim, du schreibst mir, ob noch Interesse an einer anderen Lösung besteht. Von selbst mache ich jetzt erst mal nichts, weil ich keine Verwendung dafür habe. Wenn es nicht supereilig ist, wird es für mich machbar sein. Ich möchte dafür natürlich kein Geld nehmen
(weil du das oben andeutetest), deshalb die etwas geringere Priorität.

Gruß
Peter
als Antwort auf: [#453559] Top
 
Klaus79 S
Beiträge: 291
8. Okt 2010, 18:36
Beitrag #11 von 35
Beitrag ID: #453583
Bewertung:
(11902 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Joachim,
mit folgendem Makro kannst Du einige Parameter stellen wie
Spaltenbeginn
Wunschanzahl der Zeilen
Datenmenge (wahlweise selbst rechnen lassen).

Man könnte sicher auch noch eine Userform erstellen für
die Einstellungen und eine Sicherheitsabfrage. Und eine
Überprüfung, ob die Spalten ausreichen und und und.

Da ich aber nur ein Hobby-Excler bin überlasse ich das
mal den Anderen ...


Sub AufteilenVariabel()
Dim WUNSCH As Integer
Dim ANZ As Integer
Dim SPAL As Integer
Dim CopySPAL As Integer
Dim STP As Long
Dim GRUND As Integer
Dim VONBIS As Integer
Dim wks As Worksheet
Set wks = ActiveSheet 'statt ActiveSheet auch: Worksheets("DeinBlattName")

'*************************************************
'in welcher Spalte soll mit dem Kopieren begonnen werden: 1 = A
CopySPAL = 3
'*************************************************
'Wunschanzahl der Zeilen pro Spalte nach Kopieren:
WUNSCH = 8
'*************************************************
'Anzahl der Datenzeilen in Spalte A
'Eingabe manuell:
'STP = 100
'oder Rechnen lassen:
STP = wks.Range("A65536").End(xlUp).Row
'*************************************************

SPAL = CopySPAL
ANZ = WUNSCH
GRUND = WUNSCH
VONBIS = WUNSCH - 1

Application.ScreenUpdating = False
With wks

On Error GoTo ERRORHANDLER
For ANZ = ANZ To (STP + ANZ) Step ANZ
Range(Cells(1, SPAL), Cells(GRUND, SPAL)).Value = Range(Cells((ANZ - VONBIS), 1), Cells(ANZ, 1)).Value
SPAL = SPAL + 1
Next ANZ
ERRORHANDLER:

End With
Application.ScreenUpdating = False

If CopySPAL = 1 Then
wks.Range("A" & (GRUND + 1) & ":A" & STP).ClearContents
Else
wks.Range("A1:A" & STP).ClearContents
End If

Set wks = Nothing

End Sub


Schönes Wochenende
Klaus
als Antwort auf: [#453578]
(Dieser Beitrag wurde von Klaus79 am 8. Okt 2010, 18:52 geändert)
Top
 
Henry
Beiträge: 749
9. Okt 2010, 12:45
Beitrag #12 von 35
Beitrag ID: #453627
Bewertung:
(11830 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Klaus,
bei deinem Makro sehe ich die automatische, gleichmäßige Verteilung auf x Spalten nicht.
Also z.B.: 22 Werte sind vorhanden, dann sollen nach JoPos Vorgabe (mit 10 Spalten) in den Spalten A-B je 3(!) Werte und in den Spalten C-J je 2 Werte eingefügt werden. Und DAS bekommst du mit deinem Ansatz doch nicht hin, oder?

Gruß,Henry
als Antwort auf: [#453583] Top
 
Henry
Beiträge: 749
9. Okt 2010, 12:57
Beitrag #13 von 35
Beitrag ID: #453629
Bewertung:
(11829 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Antwort auf [ farbauge ] ...Ein Nachteil bei diesem Skript ist die Festverdrahtung auf jeweils 10 zu versetzende Werte mit max=100.

Wenn es immer 10 Spalten sein sollen, muss ich aus einer variablen Anzahl mit Hilfe der Modulo-Funktion rausfinden, wie viele Werte in jede Spalte gehören und die restlichen (<10) von links an soweit packen, bis alle versorgt sind. ...


Sehe ich genauso! Allerdings so easy, wie es sich anhört, ist das dann doch nicht.
Denn welche Zellen mit Werten befüllt werden müssen (s.o. das Beispiel '22 Werte'), DAS ist einfach zu berechnen.
ABER in welche Zelle GENAU welcher Wert eingefügt werden muss (z.B. was kommt in C2? Der Wert aus A8), dafür braucht's einen verdammt komplexen Algorithmus. Zumindest soweit ich das sehe.

Auf dem Papier habe ich den auch schon ausgeknobelt, muss den demnächst noch ins Excel übertragen (ob's funktioniert; und dann hier reinkopieren).

Gruß,Henry
als Antwort auf: [#453578] Top
 
Klaus79 S
Beiträge: 291
9. Okt 2010, 19:28
Beitrag #14 von 35
Beitrag ID: #453644
Bewertung:
(11787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hallo Henry,
das habe ich anders verstanden:

Zitat:
"Alle Zeilen aus Spalte A sollen gleichmäßig in 10 Spalten aufgeteilt werden.
Wenn es nicht aufgeht, ist die letzte Zeile nicht bis J(=10) voll, sondern endet z.B. bei C."

Gib in meinem Makro bei WUNSCH = 10 ein und 22 Daten werden aufgeteilt in
10 10 2

Mir kommt jetzt beim Schreiben allerdings der Verdacht, dass der Frager die Aufteilung
von links nach rechts wollte, also zeilenweise ... bei meinem Makro werden die Spalten nacheinander befüllt.
Das konnte man aus der Beispieldatei allerdings ersehen, da die Daten durchnummeriert waren –
und Joachim hat das nicht muniert ...

Vielleicht klärt er uns ja noch darüber auf.

Gruß
Klaus
als Antwort auf: [#453627] Top
 
Henry
Beiträge: 749
11. Okt 2010, 14:38
Beitrag #15 von 35
Beitrag ID: #453738
Bewertung:
(11701 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spalte aufteilen in Excel


Hier der Code zur gleichmäßigen Umverteilung der Werte aus Spalte A:
Code
Sub Zellwerte_ausSpalteA_in10Spalten_transponieren() 
'die Zellwerte aus Spalte_A werden gleichmäßig in x Spalten verteilt

spalten = 10 'für eine verteilung in x Spalten

num_rows = Worksheets(1).UsedRange.Rows.Count
antwort = MsgBox("In der Tabelle sind " & num_rows & " Reihen enthalten!" & vbCr & vbCr _
& "Werte umsortieren in " & spalten & " Spalten?", vbOKCancel, "Makro ausführen?")
If antwort = vbCancel Then Exit Sub

c = 1
i = num_rows \ spalten + Int(1 / (c \ (num_rows Mod spalten + 1) + 1)) + 1
For c = 2 To spalten
r = 1
Do While r <= num_rows \ spalten + Int(1 / (c \ (num_rows Mod spalten + 1) + 1))
Worksheets(1).Cells(r, c).Value = Worksheets(1).Cells(i, 1).Value
Worksheets(1).Cells(i, 1).ClearContents
r = r + 1
i = i + 1
Loop
Next c

Antwort = MsgBox("Tabelle transponiert in " & (spalten) & " Spalten.", vbOKOnly, "Makro beendet")
End Sub


Fehlt zwar drumherum noch ein wenig Komfort+Automatisierung, aber zum Ausprobieren reicht das Makro.

Gruß,Henry
als Antwort auf: [#453629] Top
 
« « 1 2 3 » »  
X