Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
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
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra, Sub Makro4()
Range("B1:B6").FormulaR1C1 = "=""Begriff kommt das ""&COUNTIF(R1C[-1]:RC[-1],RC[-1])&"". Mal vor"""
End Sub Gruß Uwe
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
30.03.2019, 13:49
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2019, 13:55 von Elex.)
Uwe hat deine Vorgaben verstanden.
Ich hatte A und B als Spalten Verstanden und nicht als unterschiedliche Begirffe.
Gruß Elex
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
30.03.2019, 15:34
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2019, 15:42 von snb.)
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
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
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!
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
Registriert seit: 29.09.2015
Version(en): 2030,5
30.03.2019, 16:32
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2019, 16:41 von snb.)
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
|