Hallo,
ich möchte gerne aus einer Tabelle die Werte die in Spalte C stehen auf einem neuen Tabellenplatt in 4er Blöcke zusammenfassen.
Mein Lösungsansatz ist bisher:
Schleife durch Vorher-Tabelle ( Zeile für Zeile)
wenn ein Wert in Spalte C steht dann schreibe in Spalte A der Nachher-Tabelle, dann Spalte B usw.
nach 4 Werten neue Zeile in der Nachher-Tabelle
denke, ich mache das sicherlich etwas umständlich. Vielleicht hat mir jemand einen Tipp
Vorher-Tabelle
[
attachment=32930]
Nachher-Tabelle
[
attachment=32929]
Grüße Rainer
Hallöchen,
solche Aufgaben haben wir schon öfter hier gelöst, nutze mal unsere Suche oben rechts
z.B. nach vertikal horizontal
Moin
Da gibt es auch was bei excelformeln.nicht-mehr.de.
Hallo Andre,
mach ich gleich ... habe schon vorher gesucht aber nach Block
Gruss Rainer
Hallo,
habe mir mal die Lösungen( vertikal -horizontal) im Forum angeschaut. Bin noch nicht wirklich weiter gekommen ( als unerfahrener Neuling). Beim transponieren wird die selektierte Spalte komplett als Zeile angezeigt. Wenn ich jetzt diese in 4er Splaten aufteilen könnte, dann wäre das super.
Einen VBA Ansatz kann ich nicht finden ...
Gruss Rainer
Moin!
Wozu VBA?
Ist doch einfache Mathematik in der INDEX()-Formel:
| A | B | C | D | E | F |
1 | a | | a | b | c | d |
2 | b | | e | f | g | h |
3 | c | | i | j | k | l |
4 | d | | m | n | o | p |
5 | e | | q | r | s | t |
6 | f | | u | v | w | x |
7 | g | | y | z | | |
8 | h | | | | | |
9 | i | | | | | |
10 | j | | | | | |
11 | k | | | | | |
12 | l | | | | | |
13 | m | | | | | |
14 | n | | | | | |
15 | o | | | | | |
16 | p | | | | | |
17 | q | | | | | |
18 | r | | | | | |
19 | s | | | | | |
20 | t | | | | | |
21 | u | | | | | |
22 | v | | | | | |
23 | w | | | | | |
24 | x | | | | | |
25 | y | | | | | |
26 | z | | | | | |
Zelle | Formel |
C1 | =INDEX($A:$A;ZEILE(X1)*4-4+SPALTE(A1)) |
Formel aus C1 nach rechts und unten ziehen.
(ich habe hier das Zahlenformat ;;;@ benutzt, um die 0 nicht anzuzeigen.
Gruß Ralf
Hallo,
als Formelalternative könntest du auch PowerQuery (Tab "Daten - Aus Tabelle/Bereich") benutzen.
Beispiel anbei.
Für die Benutzer der Abo-Version von Excel oder auch die Nutzer von Excel-Online habe ich noch eine Variante, die mit
einer einzigen Formelzelle in C1 auskommt:
| A | B | C | D | E | F |
1 | a | | a | b | c | d |
2 | b | | e | f | g | h |
3 | c | | i | j | k | l |
4 | d | | m | n | o | p |
5 | e | | q | r | s | t |
6 | f | | u | v | w | x |
7 | g | | y | z | | |
8 | h | | | | | |
9 | i | | | | | |
10 | j | | | | | |
11 | k | | | | | |
12 | l | | | | | |
13 | m | | | | | |
14 | n | | | | | |
15 | o | | | | | |
16 | p | | | | | |
17 | q | | | | | |
18 | r | | | | | |
19 | s | | | | | |
20 | t | | | | | |
21 | u | | | | | |
22 | v | | | | | |
23 | w | | | | | |
24 | x | | | | | |
25 | y | | | | | |
26 | z | | | | | |
Zelle | Formel |
C1 | =INDEX(A:A;SEQUENZ(AUFRUNDEN(ANZAHL2(A:A)/4;0);4)) |
Das Schöne daran ist, dass man ohne Hirnschmalz den Vierer-Block bequem in seine gewünschte "Breite" ändern kann.
@Cadmus:
Ich habe mir Deine Version aus Interesse angesehen.
Sehr schön!
Du wirst mir aber sicherlich Recht geben, dass meine letzte Formel "etwas" einfacher ist?
Wenn man dann noch die Spaltenanzahl in eine Hilfszelle einträgt, hat man eine dynamische Anpassung:
| A | B | C | D | E | F |
1 | a | 3 | a | b | c | |
2 | b | | d | e | f | |
3 | c | | g | h | i | |
4 | d | | j | k | l | |
5 | e | | m | n | o | |
6 | f | | p | q | r | |
7 | g | | s | t | u | |
8 | h | | v | w | x | |
9 | i | | y | z | | |
10 | j | | | | | |
11 | k | | | | | |
12 | l | | | | | |
13 | m | | | | | |
14 | n | | | | | |
15 | o | | | | | |
16 | p | | | | | |
17 | q | | | | | |
18 | r | | | | | |
19 | s | | | | | |
20 | t | | | | | |
21 | u | | | | | |
22 | v | | | | | |
23 | w | | | | | |
24 | x | | | | | |
25 | y | | | | | |
26 | z | | | | | |
27 | | | | | | |
Zelle | Formel |
C1 | =INDEX(A:A;SEQUENZ(AUFRUNDEN(ANZAHL2(A:A)/B1;0);B1)) |
Hallo Forumgemeinde,
wow ... habe wieder viel gelernt.
Es ist wirklich schön zu sehen, daß es Menschen gibt, die in ihrer Freizeit und ihrem Wissen einem auf die Sprünge helfen.
Herzlichen Dank!
Grüße Rainer
Basiert auf Cadmus' Datei:
Code:
Sub M_snb()
sn = Cells(1).CurrentRegion
ReDim sp(UBound(sn) \ 4, 3)
For j = 0 To UBound(sn) - 2
sp(j \ 4, j Mod 4) = sn(4 * (j \ 4) + j Mod 4 + 2, 1)
Next
Cells(1, 6).Resize(UBound(sp) + 1, UBound(sp, 2) + 1) = sp
End Sub