![]() |
Betrifft: wenn Funktion in VBA Code
von: ANAnas
Geschrieben am: 04.11.2014 09:40:40
Hallo Gemeinde,
mir fehlt im Moment ein wenig das Verständis darüber, wie man 2 Zellen miteinander vergleicht. Desweiteren soll der String erweitert werden, wenn die beiden Zellen gleich sind.
Das sieht in etwa so aus:
0011
0012
0013
0014 - hier soll der String erweitert werden mit 0014-1
0014 - hier soll der String erweitert werden mit 0014-2
0015
0016
...
wenn die Werte nicht gleich sind, soll nichts gemacht werden.
Mit meiner wenn-funktion funktioniert es.
=WENN(UND(C4="I";W4=1;B4=B5);B4&"-1";WENN(UND(C4="I";X4=2);B4&"-2";B4))
könnt ihr mir dabei bitte helfen?
lg
![]() ![]() |
Betrifft: AW: wenn Funktion in VBA Code
von: Rudi Maintaire
Geschrieben am: 04.11.2014 10:49:10
Hallo,
liest aus A2:Ax und schreibt nach B2:Bx.
Sub ananas() Dim oDic As Object, vArr, i As Long, o Dim oOut As Object Set oDic = CreateObject("scripting.dictionary") Set oOut = CreateObject("scripting.dictionary") vArr = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)) For i = 1 To UBound(vArr) oDic(vArr(i, 1)) = oDic(vArr(i, 1)) + 1 Next i For Each o In oDic If oDic(o) > 1 Then For i = 1 To oDic(o) oOut(o & "-" & Format(i, "000")) = 0 Next Else oOut(o) = 0 End If Next With Cells(2, 2).Resize(oOut.Count) .NumberFormat = "@" .Value = WorksheetFunction.Transpose(oOut.keys) End With End SubGruß
![]() ![]() |
Betrifft: AW: wenn Funktion in VBA Code
von: ANAnas
Geschrieben am: 04.11.2014 11:11:46
Hallo Rudi!
Ersteinmal vielen Dank für deine schnelle Hilfe :)
Der Ansatz ist schon nicht schlecht, jedoch nicht zu 100% korrekt...
Das Auslesen aus Spalte A funktioniert nicht ganz. Dein Quellcode schreibt fortlaufend eine Nummer in Spalte B.
Es soll an dem String eine "-01" bzw "-02" angehängt werden, wenn 2 gleiche Zeichenketten untereinander stehen. Sprich an der ersten eine "-01" und an der darunter die "-02".
LG
![]() ![]() |
Betrifft: AW: wenn Funktion in VBA Code
von: fcs
Geschrieben am: 04.11.2014 11:00:04
Hallo ANAnas,
nachfogend ein Makro mit entsprechender Auswertung.
Falls die Prüfung für Spalte C (3) nicht relevant ist, dann kannst du sie weglassen.
Gruß
Franz
Sub MarkierenMehrfache() Dim wks As Worksheet, Zeile As Long, intCount As Integer Dim strZelle As String Dim SpalteWert As Long, spalteErgebnis As Long Set wks = ActiveSheet SpalteWert = 2 'Spalte B - Spalte mit zu vergleichenden Werten spalteErgebnis = 5 'Spalte E - Spalte mit Ergebnissen - kann auch identisch SpalteWert sein. With wks For Zeile = 4 To .Cells(.Rows.Count, SpalteWert).End(xlUp) strZelle = .Cells(Zeile, SpalteWert).Text If strZelle = .Cells(Zeile + 1, SpalteWert).Text _ And .Cells(Zeile, 3).Value = "I" Then intCount = intCount + 1 .Cells(Zeile, spalteErgebnis).Value = "'" & strZelle & "-" & Format(intCount, "0") Else If intCount > 0 Then 'Wert ist identisch mit vorheriger Zeile .Cells(Zeile, spalteErgebnis).Value = "'" & _ .Cells(Zeile, SpalteWert).Text & "-" & Format(intCount + 1, "0") Else .Cells(Zeile, spalteErgebnis).Value = "'" & strZelle End If intCount = 0 End If Next End With End Sub
![]() ![]() |
Betrifft: AW: wenn Funktion in VBA Code
von: ANAnas
Geschrieben am: 04.11.2014 11:53:28
Hallo Franz :)
Thats IT! Vielen lieben Dank.
you make my day
![]() |