Clever-Excel-Forum

Normale Version: Spalte auf mehrfach vorkommende Werte prüfen und...
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,


ich habe ein Frage! :)

Wie kann ich per VBA ein Spalte durchsuchen und mir immer die Zelle ausgeben lassen:

1. wo ein Begriff das erste mal vorkommt
2. dann  das zwei mal vorkommt
3. dann das dritte mal vorkommt usw....
und dann in Spalte B daneben reinschreibt "Begriff kommt das x mal vor"
Beispiel in Spalte A:

A - Begriff kommt das 1. Mal vor
A - Begriff kommt das 2. Mal vor
A - Begriff kommt das 3. Mal vor
B - Begriff kommt das 1. Mal vor
A - Begriff kommt das 4. Mal vor
B - Begriff kommt das 2. Mal vor

Vielen Dank im Voraus
LG
Alexandra
Hi

wenn ich mir deine bisherigen Beiträge anschaue, sollten dir die Hinweise auf

Range.Find-Methode
Range.FindNext-Methode

reichen.

Wenn nicht Melde dich noch mal.

Gruß Elex
Hi Elex,

dank für dein Hinweis, ja, ein festen wert finden das kann ich aber ich weiß nicht wie ich das formulieren muss damit es mit den Werten in der Spalte sucht und findet!


Kannst du mir auf die Sprünge helfen?

Danke
LG
Alexandra
Hallo Alexandra,
Sub Makro4()
Range("B1:B6").FormulaR1C1 = "=""Begriff kommt das ""&COUNTIF(R1C[-1]:RC[-1],RC[-1])&"". Mal vor"""
End Sub
Gruß Uwe
Uwe hat deine Vorgaben verstanden.

Ich hatte A und B als Spalten Verstanden und nicht als unterschiedliche Begirffe.


Gruß Elex
Hallo Uwe,


:16:

die Formel ohne VBA kenne ich! :)
Aber, auf die Idee die Formel einfach auf die Range zu kopieren bin ich nicht gekommen!

Nur Interessehalber, gibt es auch Möglichkeiten ohne Formel, rein VBA? 
Mir reichen Stichworte oder Links zu Beispielen!

Vielen Dank auch an Elex

LG
Alexandra
Hallo Alexandra,

(30.03.2019, 14:50)cysu11 schrieb: [ -> ]Nur Interessehalber, gibt es auch Möglichkeiten ohne Formel, rein VBA? 

klar, z.B.:
Sub Makro1()
 With Range("B1:B6")
   .Formula = "=""Begriff kommt das ""&COUNTIF(A$1:A1,A1)&"". Mal vor"""
   .Value = .Value
 End With
End Sub
und ganz ohne Excelfunktionen dann z.B. so:
Sub Makro2()
 Dim i As Long, j As Long, k As Long
 With Range("A1:A6")
   .Offset(, 1) = ""
   For i = 1 To .Cells.Count
     k = 0
     For j = 1 To i
       If .Cells(i, 1).Value = .Cells(j, 1).Value Then
         k = k + 1
         If .Cells(j, 1).Offset(, 1) = "" Then
           .Cells(j, 1).Offset(, 1).Value = "Begriff kommt das " & k & ". Mal vor"
           Exit For
         End If
       End If
     Next j
   Next i
 End With
End Sub
Gruß Uwe
Code:
Sub M_snb()
  Columns(1).SpecialCells(2).Name = "snb"
  [snb].Offset(, 1) = [index(snb & "_kommt " & countif(snb,snb) & " Mal vor",)]
End Sub

Oder

Code:
Sub M_snb()
  sn = Columns(1).SpecialCells(2)

  For j = 1 To UBound(sn)
     sn(j, 1) = sn(j, 1) & " kommt " & UBound(Filter(Split("_" & Join(Application.Transpose(sn), "_|_") & "_", "|"), "_" & sn(j, 1) & "_")) + 1 & " Mal vor"
  Next
  
  Columns(1).SpecialCells(2).Offset(, 1) = sn
End Sub
Hi Uwe,

das funktioniert prima, ich würde gerne wissen wofür stehen k und j?

Danke sehr schon mal

@snb, Danke für deine Versionen, diese tun aber nicht ganz was ich wollte!  Huh

Es sollte immer heißen, Begriff kommt das 1. Mal vor, Begriff kommt das 2. Mal vor usw. aber von oben nach unten! 

LG
Alexandra
Stichworte weder eines Beispiel reichten offensichtlich nicht....

Code:
Sub M_snb()
  sn = Columns(1).SpecialCells(2)

  For j = 1 To UBound(sn)
     sn(j, 1) = sn(j, 1) & " kommt das " & UBound(Filter(Application.Transpose(sn), sn(j, 1) & " kommt")) + 2 & ".  Mal vor"
  Next
 
  Columns(1).SpecialCells(2).Offset(, 1) = sn
End Sub

oder

Code:
Sub M_snb()
  Columns(1).SpecialCells(2).Name = "snb"
  [snb].Offset(, 1) = [index(snb & " kommt " & countif(offset(A1,,,row(snb)),snb) & ".Mal vor",)]
End Sub
Seiten: 1 2