Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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

Address .Small

Address .Small
10.12.2019 11:44:24
Klaus
Hallöchen, ich habe ein kleines Excelproblem.
Ich will eine Zeile mit Daten (Pl. Datum) nach ihrer größe sortieren (funtioniert). Nun brauch ich aber noch zusätzlich die Zelle 2 rechts von den Daten. Leider ergibt es immer einen Fehler. Ich glaube die .Match Funktion würde auch nicht funktionieren, da die Daten teilweise die gleichen seien können. Habt ihr vllt eine Idee, wie ich das lösen kann?
Sub Test()
D1 = CDate(WorksheetFunction.Small(Range("A4, B4, C4"), 1))
D2 = CDate(WorksheetFunction.Small(Range("A4, B4, C4"), 2))
D3 = CDate(WorksheetFunction.Small(Range("A4, B4, C4"), 3))
K1 = D1.Offset(1, 0)
K2 = D2.Offset(1, 0)
K3 = D3.Offset(1, 0)
End Sub

Liebe Grüße
Klaus

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

Betreff
Datum
Anwender
Anzeige
AW: Address .Small
10.12.2019 11:56:07
Torsten
Hallo Klaus,
die Zelle 2 nach rechts waere
D1.Offset(0, 2)
Gruss Torsten
AW: Address .Small
10.12.2019 11:59:43
Klaus
Ah sry ich meine die Zeile darunter. Es klappt nämlich trotzdem nicht
AW: Address .Small
10.12.2019 14:15:59
fcs
Hallo Klaus,
Problem Nr. 1:
Die Varablen D1, D2,D3 müssen als Range.Objekte deklariert werden.
Problem Nr. 2:
Wie von dir schon angemerkt - wenn Identisch Werte vorkommen, dann liefert Funktion Match ggf. falsche Ergebnis.
Lösung: Die zu sortierenden Daten werden in einen temporären Zellbereich kopiert, dann die Spalten nach dem Datum sortiert. Und die Werte in die Zielzellen eingetragen
LG
Franz

Sub Test()
Dim rngTemp As Range
Dim rowL As Long
Dim wks As Worksheet
Dim intI As Integer
Set wks = ActiveSheet
With wks
'letzte benutzte Zeile im Blatt
rowL = .UsedRange.Row + .UsedRange.Rows.Count - 1
'Temporären Bereich für die zu sortierendenDaten setzen
Set rngTemp = .Range(.Cells(rowL + 2, 1), .Cells(rowL + 3, 3)) 'Zellbereich _
außerhalb der vorhandenen Daaen
'Daten kopieren in temporären bereich
.Range("A4:C5").Copy
rngTemp.PasteSpecial Paste:=xlPasteFormats
rngTemp.PasteSpecial Paste:=xlPasteValues
'Spalten nach 1. Zeile sortieren
rngTemp.Sort key1:=rngTemp.Range("A1"), Order1:=xlAscending, Header:=xlNo, _
Orientation:=xlLeftToRight
'sortierte Daten in Zielbeeiche eintragen
For intI = 1 To rngTemp.Columns.Count
.Range("D1").Offset(intI - 1, 0) = rngTemp.Cells(1, intI).Value
.Range("K1").Offset(intI - 1, 0) = rngTemp.Cells(2, intI).Value
Next
End With
rngTemp.EntireRow.Delete
Range("A4").Select
End Sub
Sub Test2()
'mit Transposition der Daten, dann sortieren, übertragen
Dim rngTemp As Range
Dim rowL As Long
Dim wks As Worksheet
Dim intI As Integer
Set wks = ActiveSheet
With wks
'letzte benutzte Zeile im Blatt
rowL = .UsedRange.Row + .UsedRange.Rows.Count - 1
'Temporären Bereich für die zu sortierendenDaten setzen
Set rngTemp = .Range(.Cells(rowL + 2, 1), .Cells(rowL + 5, 2)) 'Zellbereich außerhalb _
der vorhandenen Daaen
'Daten kopieren in temporären bereich
.Range("A4:C5").Copy
rngTemp.PasteSpecial Paste:=xlPasteFormats, Transpose:=True
rngTemp.PasteSpecial Paste:=xlPasteValues, Transpose:=True
'Spalten nach 1. Zeile sortieren
rngTemp.Sort key1:=rngTemp.Range("A1"), Order1:=xlAscending, Header:=xlNo, _
Orientation:=xlTopToBottom
'sortierte Daten in Zielbeeiche eintragen
rngTemp.Columns(1).Copy .Range("D1")
rngTemp.Columns(2).Copy .Range("K1")
End With
rngTemp.EntireRow.Delete
Range("A4").Select
End Sub

Anzeige
AW: Address .Small
10.12.2019 13:09:19
Rudi
Hallo,
was soll D1, D2 etc. sein? Nicht deklarierte Variablen?
Gruß
Rudi
AW: Address .Small
10.12.2019 13:13:42
Klaus
Falls es jemanden interessiert, hier die Lösung:
Sub Test()
Dim PD1, PD2, PD3, D1, D2, D3, K1, K2, K3 As Range
D1 = CDate(WorksheetFunction.Small(Range("I4, L4, O4"), 1))
Set PD1 = Range("A4, B4, C4").Find(what:=CDate(WorksheetFunction.Small(Range("A4, B4, C4"),  _
1)), lookat:=xlWhole)
D2 = CDate(WorksheetFunction.Small(Range("I4, L4, O4"), 2))
Set PD2 = Range("A4, B4, C4").Find(what:=CDate(WorksheetFunction.Small(Range("A4, B4, C4"),  _
2)), lookat:=xlWhole)
D3 = CDate(WorksheetFunction.Small(Range("I4, L4, O4"), 3))
Set PD3 = Range("A4, B4, C4").Find(what:=CDate(WorksheetFunction.Small(Range("A4, B4, C4"),  _
3)), lookat:=xlWhole)
K1 = PD1.Offset(1, 0)
K2 = PD2.Offset(1, 0)
K3 = PD3.Offset(1, 0)
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige