Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auflistung in Tranchen

Auflistung in Tranchen
27.07.2006 19:57:49
Erich
Hallo EXCEL-Freunde,
mit nachstehendem Code werden ermittelte Werte in den Spalten C und D
untereinander aufgelistet (bis zu 600). Für die Vorbereitung eines Ausdrucks im
Querformat soll die Auflistung nach unten aber immer bei der Zeile 41 aufhören
und dann bei Zeile 2 und zwei spalten weiter rechts wieder beginnen.
Mit CountIf kann ich zwar feststellen, wie viele Zellen belegt werden,
ich kriege aber das Ende nach Zeile 41 nicht hin:
Sub auflisten()
Dim Z As Range, Anz1 As Integer, Anz2 As Integer, Anz3 As Integer
Dim lZiel As Long
Dim adr As Range
TabAuswahl
Set adr = Worksheets("Tabelle1").Range("D2:D700")
Anz1 = Application.WorksheetFunction.CountIf(adr, "O")
Anz2 = Application.WorksheetFunction.CountIf(adr, "V")
Anz3 = Anz1 + Anz2
MsgBox Anz3
For Each Z In Sheets("Tabelle1").Range("D2:D640")
If Z.Value = "V" Or Z.Value = "O" Then
lZiel = Sheets("Gefunden").Range("D65536").End(xlUp).Row + 1
Sheets("Gefunden").Cells(lZiel, Z.Column) = Sheets("Tabelle1").Cells(Z.Row, Z.Column)
Sheets("Gefunden").Cells(lZiel, Z.Column - 1) = Sheets("Tabelle1").Cells(Z.Row, Z.Column - 2)
End If
Next
End Sub
Sub TabAuswahl() ' prüfen ob neue Tabelle angelegt werden muss
Dim Sh As Worksheet
Dim sName$
sName = "Gefunden"
For Each Sh In Worksheets
If InStr(Sh.Name, sName) > 0 Then
Sh.Select
Exit Sub
End If
Next Sh
Sheets.Add.Name = ("Gefunden")
End Sub

Besten Dank für eine Hilfe!
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auflistung in Tranchen
28.07.2006 06:37:43
Erich
Hallo Namnsvetter,
probier mal Sub auflisten() Dim Z As Range Dim lZiel As Long, sZiel As Integer TabAuswahl sZiel = Cells(41, Columns.Count).End(xlToLeft).Column + 2 If sZiel < 4 Then sZiel = 4 lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row For Each Z In Sheets("Tabelle1").Range("D2:D640") If Z.Value = "V" Or Z.Value = "O" Then lZiel = lZiel + 1 If lZiel > 41 Then sZiel = sZiel + 2 lZiel = 2 End If Cells(lZiel, sZiel) = Z Cells(lZiel, sZiel - 1) = Z.Offset(0, -1) End If Next End Sub Ich gehe davon aus, dass bei Treffer in Spalte D die Spalten C und D übernommen werden. Mit
Sheets("Gefunden").Cells(lZiel, Z.Column - 1) = Sheets("Tabelle1").Cells(Z.Row, Z.Column - 2)
hattest du Spalte B statt C übernommen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Auflistung in Tranchen
28.07.2006 06:44:38
Erich
Hallo Erich,
sorry, da fehlte noch was: Sub auflisten() Dim Z As Range Dim lZiel As Long, sZiel As Integer TabAuswahl sZiel = Cells(41, Columns.Count).End(xlToLeft).Column If sZiel < 4 Then sZiel = 4 lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row If lZiel = 41 Then sZiel = sZiel + 2 lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row End If For Each Z In Sheets("Tabelle1").Range("D2:D640") If Z.Value = "V" Or Z.Value = "O" Then lZiel = lZiel + 1 If lZiel > 41 Then sZiel = sZiel + 2 lZiel = 2 End If Cells(lZiel, sZiel) = Z Cells(lZiel, sZiel - 1) = Z.Offset(0, -1) End If Next End Sub Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Auflistung in Tranchen
28.07.2006 08:37:22
Erich
Hallo Erich,
besten Dank. Das mit der Spalte B war Absicht, weil hier die relevanten Daten stehen.
Habe die Übertragung noch um eine Spalte erweitert und um eine nach links versetzt:

Sub auflisten()
Dim Z As Range
Dim lZiel As Long, sZiel As Integer
TabAuswahl
sZiel = Cells(41, Columns.Count).End(xlToLeft).Column
If sZiel < 4 Then sZiel = 4
lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row
If lZiel = 41 Then
sZiel = sZiel + 3
lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row
End If
For Each Z In Sheets("Erfassung").Range("D2:D2000")
If Z.Value = "V" Or Z.Value = "O" Then
lZiel = lZiel + 1
If lZiel > 41 Then
sZiel = sZiel + 3
lZiel = 2
End If
Cells(lZiel, sZiel - 1) = Z
Cells(lZiel, sZiel - 2) = Z.Offset(0, -2)
Cells(lZiel, sZiel - 3) = Z.Offset(0, -3)
End If
Next
End Sub

So sieht das Ergebnis aus (Auszug):
Gefunden
 ABCDEFGHI
1         
2A_1TMRied VDK_1SASEsbjerg fB VFinnlandYMP  jaV
3A_1TMMattersburg VDK_1SASBröndby Kopenhagen VFinnlandYTP-47 V
4A_1TMSturm Graz VDK_1SASAalborg BK VFinnlandK_AFCV  ja ?V
5A_1TMRheindorf Altach VDK_1SASFC Nordsjælland VFinnlandK_AKontu V
6A_1TMRapid Wien VDK_1SASAC Horsens VFinnlandK_AKuPS Ak. V
7A_1TMFC Superfund PaschingVDK_1SASViborg VFinnlandK_AKäPa V
8A_1TMFC Wacker Tirol VDK_1SASVejle VFinnlandK_ALPS V
9A_1TMSalzburg VDK_1SASRanders FC VFinnlandK_BKaaPo V
10A_2RZKapfenberg VDK_1SASFC Kopenhagen VFinnlandK_BP-Iirot V
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Jetzt bräuchte ich noch eine Ergänzung:
In den Spalten A, D, G usw. (also die erste Spalte und dann in jeder 3. Spalte) sollen
die Zellen gelöscht werden, die mit der Zelle oberhalb den gleichen Namen haben
(wird übersichtlicher und ich erspar mir Zeit beim ausdrucken).
Meine Versuche waren aber erfolglos; es gäbe bestimmt auch was in der Recherche,
vielleicht kannst Du das noch einbauen.
Besten Dank schon mal!
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de
Anzeige
AW: Auflistung in Tranchen
28.07.2006 11:01:02
fcs
Hallo Erich,
mit folgender Anpassung wird der Wert in Z.Offset(0, -3) nur eingetragen, wenn er von dem zuletzt eingetragenen Wert abweicht oder eine neue Spalte begonnen wird. Der letzte in die Tabelle geschrieben Wert wird in der Variablen "Inhalt" zwischengespeichert.
gruss Franz

Sub auflisten()
Dim Z As Range
Dim lZiel As Long, sZiel As Integer, Inhalt As String
TabAuswahl
sZiel = Cells(41, Columns.Count).End(xlToLeft).Column
If sZiel < 4 Then sZiel = 4
lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row
If lZiel = 41 Then
sZiel = sZiel + 3
lZiel = Cells(Rows.Count, sZiel).End(xlUp).Row
End If
For Each Z In Sheets("Erfassung").Range("D2:D2000")
If Z.Value = "V" Or Z.Value = "O" Then
lZiel = lZiel + 1
If lZiel > 41 Then
sZiel = sZiel + 3
lZiel = 2
End If
Cells(lZiel, sZiel - 1) = Z
Cells(lZiel, sZiel - 2) = Z.Offset(0, -2)
If Inhalt <> Z.Offset(0, -3) Or lZiel = 2 Then
Inhalt = Z.Offset(0, -3)
Cells(lZiel, sZiel - 3) = Z.Offset(0, -3)
End If
End If
Next
End Sub

Anzeige
Klasse
28.07.2006 11:26:14
Erich
Hallo Franz,
die Lösung ist natürlich wesentlich komfortabler - besten Dank!!
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige