Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 3 Spalten in markierten Reihen vergleichen

3 Spalten in markierten Reihen vergleichen
21.07.2004 14:15:28
Sabrina
Hallo,
ich verzweifle gerade an einem - für euch Profis bestimmt ganz leichtem -
VBA Problem:
Ich habe 3 Spalten in einem Exceldokument markiert und möchte jetzt
jede Reihe dieser markierten Spalten vergleichen und bearbeiten.
D.H. zuerst B2 mit C2 mit D2, danch B3 mit C3 mit D3 usw.
Sind z.B. alle 3 Zahlen einer Reihe gleich, möchte ich sie FETT darstellen,
die kleinste Zahl möchte ich immer nebenan in Zeile F schreiben.
Mein Problem: Markierte Spalten Reihenweise durchgehen und die einzelnen
Zellen der Reihen miteinander vergleichen.
Wer kann einer VBA Anfängerin helfen ?
Liebe Grüsse
Sabrina
Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
Beni
Hallo Sabrina,
versuche es mit diesem Code.
Gruss Beni

Sub Spaltenvergleich()
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2) = Cells(i, 3) And Cells(i, 2) = Cells(i, 4) Then
Range(Cells(i, 2), Cells(i, 4)).Font.Bold = True
Else
Set zeile = Range(Cells(i, 2), Cells(i, 4))
minWert = Application.WorksheetFunction.Min(zeile)
Cells(i, 6) = minWert
End If
Next i
End Sub

Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
21.07.2004 14:38:51
Jens
Hallo sabrina,
hier mal ein vorschlag. Allerdings feste zuordnung der zu vergleichenden Spalten. B mit C und D. Minimum in F schreiben. Wobei das doch bei gleichen zellen keinen sinn macht. So musst du halt zeile 6 in die for schleife mit reinnehmen.
Gruß Jens

Sub Makro3()
For i = 2 To 20
If Cells(i, 2) = Cells(i, 3) And Cells(i, 3) = Cells(i, 4) And Cells(i, 2) = Cells(i, 4) Then
Range(Cells(i, 2), Cells(i, 4)).Font.Bold = True
End If
Cells(i, 6) = Application.WorksheetFunction.Min(Cells(i, 2), Cells(i, 3), Cells(i, 4))
Next
End Sub

Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
Nike
Hi,
mein Check hat leider nicht funktioniert, aber der Rest funktinabelt ;-)
Bye
Nike

Sub test()
Dim rngBereich As Range
Dim rw As Long
On Error GoTo ErrEnd
Set rngBereich = Application.InputBox("Auswahl", "Auswahl", "A1", , , , , 8)
'If Not Intersect(rngBereich, Columns(2), Columns(3), Columns(4)) Is Nothing Then
For rw = rngBereich.Cells(1).Row To rngBereich.Cells(1).Row + rngBereich.Rows.Count - 1
If Cells(rw, 2) = Cells(rw, 3) And Cells(rw, 2) = Cells(rw, 4) Then
Range(Cells(rw, 2), Cells(rw, 4)).Font.Bold = True
Cells(rw, 6) = Cells(rw, 2)
Else
Cells(rw, 6) = WorksheetFunction.Max(Range(Cells(rw, 2), Cells(rw, 4)))
End If
Next
'End If
Exit Sub
ErrEnd:
Err.Clear
End Sub

Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
21.07.2004 14:58:50
Sabrina
Hi nochmal,
und vielen Dank für die antworten.
Wenn ich es richtig gesehen habe, habe Ihr die Spalten fest eingetragen.
Ich suche jedoch nach einer Möglichkeit die Spalten frei auszuwählen.
Also z.B. auch mal Spalte X,Y,Z.
Gibt es da eine Möglichkeit ?
Vielen Dank für die vielen Tipps
Sabrina
Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
Nike
Hi,
na dann kannst du ja den Ansatz mit der Auswahl aufnehmen,
bleibt die Frage, ob die Ausgabe auch in Spalte F erfolgen soll
oder entsprechend versetzt...
Bye
Nike
AW: 3 Spalten in markierten Reihen vergleichen
21.07.2004 15:33:14
Sabrina
Hi nochmal,
was mir jetzt noch fehlt ist:
Statt einem Eingabekasten werden die markierten Spalten genommen.
Wie kann ich die erste und letzte markierte Spalte heraus bekommen?
Liebe Grüsse
Sabrina ;-))
Anzeige
AW: 3 Spalten in markierten Reihen vergleichen
Nike
Hi,
was meinst du mit markiert?
In meinem Beispiel sieht man, wie mit .cells(1) die erste
und mit .rows.count die letzte Zeile ermittelt wird,
so aehnlich (mit columns) muesstest du da wohl was machen,
wenn ich dich richtig verstanden hab...
Bye
Nike
AW: 3 Spalten in markierten Reihen vergleichen
Beni
Hallo Sabrina,
dieser Code ermittelt zuerst die selectierte Spalte ganz links und ganz recht.
Gruss Beni

Sub Spaltenvergleich()
L = 0
Dim cell As Range
For Each cell In Selection.Cells
sel = cell.Column
If L = 0 Then L = sel 'selectierte Spalte links
R = sel  'selectierte Spalte rechts
Next
For i = 1 To Cells(Rows.Count, L).End(xlUp).Row
If Cells(i, L) = Cells(i, L + 1) And Cells(i, L) = Cells(i, L + 2) Then
Range(Cells(i, L), Cells(i, R)).Font.Bold = True
Else
Set zeile = Range(Cells(i, L), Cells(i, R))
minWert = Application.WorksheetFunction.Min(zeile)
Cells(i, 6) = minWert
End If
Next i
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige