Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eine Art Transponieren

Eine Art Transponieren
06.08.2014 07:57:49
Markus
Hallo
in Tabelle1 sind 400 Mitglieder aufgeführt.
Spalten A bis L (12 Spalten).
Nicht alle Spalten-Felder sind gefüllt (Mail, Handy, Beruf etc.)
Nun soll ein Makro folgendes machen.
Übernehmen aller gefüllten Felder (ohne Blank) und in Tabelle2 einspaltig (Spalte A) schreiben.
Bei ca 400 Mitgliedern und 12 Spalten sollten also in Tabelle2 die Felder von A1 bis ca A47000 stehen.
Danke für einen Tipp oder Hilfe.
Markus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nachgefragt ...
06.08.2014 08:09:49
neopa
Hallo Markus,
... das sieht nach einer einmaligen Aktion aus. Das lies sich auch mit nur einer (MATRIX-)Formel bewerkstelligen.
Wie soll denn zusammen gefaßt werden? Erst alle Daten aus einer Spalte, dann die der nächsten Spalte oder erst die Daten aus Zeile1, dann aus Zeile 2 etc. Allerdings ist mir momentan auch unklar, welchen Sinn die Aktion hat, denn es gibt ja anschließend keine wirklich offensichtliche Struktur mehr zu erkennen.
Gruß Werner
.. , - ...

AW: nachgefragt ...
06.08.2014 08:16:28
Markus
Hallo Werner
von A1 bis L1 durchlesen,
dann A2 ....
In Tabelle2 müsste stehen:
A1: A1 aus Tabelle1
A2: B1 aus Tabelle1
A3: D1 aus Tabelle1 (C1 aus Tabelle1 ist LEER)
Markus

Anzeige
nachgefragt ...
06.08.2014 08:12:31
Matthias
Hallo Markus
Zeig doch mal eine Bsp.Datei mit den 2 Tabellen
Dort zeigst Du mal händisch anhand von 3-4 Mitgliedern
wie Du Dir das Ergebnis vorstellst.
Ich bin mir nicht sicher wie Deine Quelle aussieht und das Ziel dargestellt werden soll.
Evtl. sieht die Quelle so aus?
Tabelle1

 ABCDEFGHIJKL
1NameMailHandyBeruf. . . . . . . . . . . . . . . . . . . . . . . .
2Name1           
3Name2           
4Name3           
5Name4           
6Name5           
7Name6           
8Name7           
9Name8           
10Name9           
11Name10           


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
Eine Art Transponieren
06.08.2014 08:37:15
Matthias
Hallo Markus
hier eine Variante
Option Explicit Sub Transp() Dim WksQ As Worksheet 'Quelle Dim WksZ As Worksheet 'Ziel Dim Rng As Range, lfv& lfv = 1 Set WksQ = Tabelle1 Set WksZ = Tabelle2 For Each Rng In WksQ.UsedRange If Rng.Row > 1 Then If Rng.Value "" Then WksZ.Cells(lfv, 1) = Rng.Value lfv = lfv + 1 If Rng.Column = 12 Then lfv = lfv + 1 End If End If Next End Sub Gruß Matthias

Anzeige
AW: Eine Art Transponieren
06.08.2014 13:54:47
Markus
Hallo Matthias
besten Dank - eigentlich Super aber ..
Das Makro soll wirklich nur die ersten 12 Spalten abarbeiten.
Aber der 13 Spalte sind teilweise noch Formeln in der Tabelle die nicht in Tabelle2 eingefügt werden müssen.
Kann man das noch ändern?
Danke
Markus

der Vollständigkeithalber hier die Formel ...
06.08.2014 08:44:39
neopa
Hallo Markus,
... allerdings interessiert mich immer noch, für was das gut sein soll.
Formel entsprechend weit nach unten kopieren:
 A
1Meier
2Markus
3Seldwyla 17
48000 Zürich
5044 123 456 77
6044 123 44 88
7052 320 55 66
8hans@mail.ch
9www.grosshandel.ch
1059
11D1485
12Abegg
13Fritz
14Dorf 18
159000 St. Gallen
16052 333 44 44
17079 441 85 67
18fritz@abegg.ch
1962
20K13856
21 

Formeln der Tabelle
ZelleFormel
A1{=WENN(ZEILE(C1)>ANZAHL2(Tabelle1!A$2:L$500); "";INDEX(Tabelle1!A:L;KKLEINSTE((Tabelle1!A$2:L$500="")*10^9+ZEILE($2:$500)*1000+SPALTE(A:L); ZEILE(C1))/1000;REST(KKLEINSTE((Tabelle1!A$2:L$500="")*10^9+ZEILE($2:$500)*1000+SPALTE(A:L); ZEILE(C1)); 1000)))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


 ABCDEFGHIJKL
1AnredeName VornameStrassePLZ OrtTelefonHandyGeschäftFaxMailHomepageAlterCode
2MeierMarkusSeldwyla 178000 Zürich044 123 456 77 044 123 44 88052 320 55 66hans@mail.chwww.grosshandel.ch59D1485
3AbeggFritzDorf 189000 St. Gallen052 333 44 44079 441 85 67  fritz@abegg.ch 62K13856
4            


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
AW: Eine Art Transponieren
06.08.2014 16:47:02
Rudi
Hallo,
eine Möglichkeit:
Sub aaa()
Dim arrIn, i As Long, j As Long, n As Long
With Sheets("Tabelle1")
arrIn = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 12)
ReDim arrOut(1 To WorksheetFunction.CountA(.Range("A:L")), 1 To 1)
End With
For i = 1 To UBound(arrIn)
For j = 1 To UBound(arrIn, 2)
If arrIn(i, j)  "" Then
n = n + 1
arrOut(n, 1) = arrIn(i, j)
End If
Next j
Next i
Sheets("tabelle2").Cells(1, 1).Resize(UBound(arrOut)) = arrOut
End Sub

Gruß
Rudi

Anzeige
und wenn du noch ...
06.08.2014 16:58:40
Rudi
Hallo,
...eine Leerzeile nach jedem Datensatz haben willst:
Sub aaa()
Dim arrIn, i As Long, j As Long, n As Long
With Sheets("Tabelle1")
arrIn = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 12)
ReDim arrOut(1 To WorksheetFunction.CountA(.Range("A:L")) + UBound(arrIn) - 1, 1 To 1)
End With
For i = 1 To UBound(arrIn)
For j = 1 To UBound(arrIn, 2)
If arrIn(i, j)  "" Then
n = n + 1
arrOut(n, 1) = arrIn(i, j)
End If
Next j
n = n + 1
Next i
With Sheets("tabelle2")
.Columns(1).Clear
.Cells(1, 1).Resize(UBound(arrOut)) = arrOut
End With
End Sub
die Felder von A1 bis ca A47000 stehen
Wie kommst du eigentlich bei 400 x 12 auf ca. 47000?
Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige