Microsoft Excel

Herbers Excel/VBA-Archiv

letzten Wert in der Spalte vergleichen


Betrifft: letzten Wert in der Spalte vergleichen
von: Ulf
Geschrieben am: 07.12.2018 10:28:21

Moin, moin

habe mich wohl wieder verrannt.
Ich möchte den letzen Wert in Spalte C überprüfen, ob dieser schon in der Spalte C vorhanden ist und wenn ja dies in einer MsgBox ausgeben.
Leider fängt er immer die Spalte von oben an zu durchsuchen und nimmt nicht den letzen Wert aus der Spalte.

http://www.herber.de/bbs/user/125951.xlsm

Folgenden Code habe ich gefunden und angepasst:

Private Sub CB_Find_Click()
Dim Lz As Long
Dim intr2 As Integer
Dim Spalte As Integer

Spalte = 3

For Lz = 1 To Cells(Rows.Count, 3).End(xlUp).Row
 For intr2 = Lz + 1 To Cells(Rows.Count, 3).End(xlUp).Row
  If Cells(Lz, Spalte) = Cells(intr2, Spalte) Then
   MsgBox Cells(Lz, Spalte).Value & " ist doppelt vorhanden (Zeile " & intr2 & ")"
  End If
 Next intr2
Next Lz

End Sub
Bin ich völlig auf dem falschen Dampfer und der Code ist dafür nicht geeignet?

Gruß
Ulf

  

Betrifft: AW: letzten Wert in der Spalte vergleichen
von: Rudi Maintaire
Geschrieben am: 07.12.2018 10:36:17

Hallo,

Sub aaa()
  Dim vntLast
  vntLast = Cells(Rows.Count, 3).End(xlUp)
  If Application.CountIf(Columns(3), vntLast) > 1 Then
    MsgBox vntLast & " ist mehrfach vorhanden!" & vbLf _
      & "Zeile: " & Application.Match(vntLast, Columns(3), 0), , _
      "gebe bekannt..."
  End If
End Sub

Gruß
Rudi


  

Betrifft: Danke, danke, danke
von: Ulf
Geschrieben am: 07.12.2018 11:00:38

Der Code sieht auch einfach aus (wenn man es kann) und ich kann ihn nachvollziehen.
Das dachte ich bei dem anderen auch, habe aber nicht nachvollziehen können, warum er immer von oben angefangen hat zu suchen.

Gruß Ulf


  

Betrifft: AW: Danke, danke, danke
von: Torsten
Geschrieben am: 07.12.2018 11:08:59

Hallo,

das lag bei dir an der Zeile

For Lz = 1 To Cells(Rows.Count, 3).End(xlUp).Row
wenn du von unten anfangen willst muesstest du schreiben
For Lz = Cells(Rows.Count, 3).End(xlUp).Row To 1 Step -1
Aber Rudi's code funktioniert ja.

Gruss Torsten


  

Betrifft: AW: Danke, danke, danke
von: Ulf
Geschrieben am: 07.12.2018 11:49:30

Stimmt, jetz fängt er von unten an zu suchen, dann nimmt er aber nicht den letzten Wert aus der Spalte.

So passt das besser. Mit dem kleinen Schönheitsfehler, dass in der MsgBox auch die letzte Zeile mit ausgegeben wird und nicht die erste doppelte.

Sub aaa()
Dim Lz As Long
Dim intr2 As Integer
Dim Spalte As Integer

Spalte = 3

Lz = Cells(Rows.Count, 3).End(xlUp).Row
 For intr2 = Lz + Cells(Rows.Count, 3).End(xlUp).Row To 1 Step -1
  If Cells(Lz, Spalte) = Cells(intr2, Spalte) Then
   MsgBox Cells(Lz, Spalte).Value & " ist doppelt vorhanden (Zeile " & intr2 & ")"
  End If
 Next intr2
End Sub
Gruß Ulf