Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Sort





Frage

Hallo, mein vba code läuft geht nicht. kann mir jmd. bitte helfen. Ich möchte gerne nach meinen vorgaben sortiert haben. Dim LoI As Long ' 1. Schleifenvariable Dim LoJ As Long ' 2. Schleifenvariable Dim LoLetzte1 As Long ' Variable letzte Zeile in Spalte A Dim LoLetzte2 As Long ' Variable letzte Zeile in Spalte B Dim Loletzte3 As Long ' Variable letzte Zeile in Tabelle3 Application.ScreenUpdating = False ' Bildschirmaktualisierung aus With Worksheets("Abrechnung").Range("IU65484:IU65520") ' letzte Zeile in Spalte A Tabelle1 LoLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row, .Rows.Count) End With With Worksheets("Tabelle2") ' letzte Zeile in Spalte B Tabelle2 LoLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row, .Rows.Count) End With For LoI = 1 To LoLetzte1 ' 1. Schleife alle Werte Spalte A For LoJ = 1 To LoLetzte2 ' 2. Schleife alle Werte Spalte B If Worksheets("Tabelle1").Cells(LoI, 1) <> "" Then ' Leerzellen nicht kennzeichnen If Worksheets("Tabelle1").Cells(LoI, 1) = Worksheets("Tabelle2").Cells(LoJ, 2) Then Worksheets("Tabelle1").Rows(LoI).Copy ' Zellen sind gleich, Zeile Kopieren With Worksheets("Tabelle3") ' letzte belegte Zeile in Tabelle3 ermitteln Loletzte3 = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1 If Loletzte3 > Rows.Count Then ' ermittelte Zeilennummer mit max. Anzahl vergleichen MsgBox "In Tabelle3 ist keine Zeile mehr frei" Application.CutCopyMode = False ' Zwischenspeicher löschen Exit Sub End If .Rows(Loletzte3).PasteSpecial Paste:=xlValues ' Werte übertragen .Rows(Loletzte3).PasteSpecial Paste:=xlFormats ' Formate übertragen End With Exit For ' innere Schleife verlassen da Datensatz gefunden End If End If Next LoJ Next LoI Application.CutCopyMode = False ' Zwischenspeicher löschen Application.ScreenUpdating = True

Antwort 1 von Saarbauer

Hallo,

ohne genau nachzuvollziehen was du da machst, da uns passende Daten fehlen, aber

With Worksheets("Abrechnung").Range("IU65484:IU65520") ' letzte Zeile in Spalte A Tabelle1
LoLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row, .Rows.Count)
End With
With Worksheets("Tabelle2") ' letzte Zeile in Spalte B Tabelle2
LoLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row, .Rows.Count)
End With
For LoI = 1 To LoLetzte1 ' 1. Schleife alle Werte Spalte A
For LoJ = 1 To LoLetzte2 ' 2. Schleife alle Werte Spalte B
If Worksheets("Tabelle1").Cells(LoI, 1) <> "" Then ' Leerzellen nicht kennzeichnen
If Worksheets("Tabelle1").Cells(LoI, 1) = Worksheets("Tabelle2").Cells(LoJ, 2) Then
Worksheets("Tabelle1").Rows(LoI).Copy ' Zellen sind gleich, Zeile Kopieren
With Worksheets("Tabelle3")

Läuft aus meiner Sicht deshalb nicht, da du einmal "Abrechnung" nutzt und dann "Tabelle1"

Gruß

Helmut

Antwort 2 von ala

Hallo Saarbauer,

könntest du mir jetzt helfen?

meine Vorgaben befinden sich in den Zellen von / bis (IU65484:IU65520) - so soll es sein/aussehen!!!!!

Analoger Anschluss
ISDN
DSL 2000
DSL 4000
DSL 8000
DSL 16000


Die Daten unten sollen mit "meinen Vorgaben " verglichen und sortiert werden - befinden sich in den Zellen von / bis (B26:B51)
Menge Artikel Betrag
9 DSL 2000 10,00 €
1 DSL 4000 20,00 €
8 Analoger Anschluss 10,00 €
4 ISDN 20,00€

Eine Bitte noch!
Es soll komplett die Zeile Menge/Artikel/Betrag sortiert werden!
Es befindet sich alles in einer Datei.
Danke im Voraus

Antwort 3 von Saarbauer

hallo,

geht nicht mit der Sortierfunktion von Excel, musst du ein Makro haben.

Ich würde an deiner Stelle ein Makro ausfzeichen in dem die Zeilen entsprechend getauscht werden und dann den Rest manuell ergänzen

Gruß

Helmut

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: