Werte vergleichen und dann x/y setzen

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Werte vergleichen und dann x/y setzen

    Hi,
    ich brauche ein relativ einfaches Makro dass die Werte (Namen, handelt sich also um Buchstaben) von Spalte A und Spalte B vergleicht und in Spalte C bei Gleichheit ein y und ungleichheit ein X setzt.

    Ich hab es schon mit einem Sverweis versucht bekomme aber keinen Vergleich bzw. das Schreiben der x/y in die dritte Spalte nicht hin. Dazu finde ich auch leider in Googel nichts wie der Befehl lautet um in einem makro einen Wert zu schreiben.

    Ich hoffe ihr könnt mir weiterhelfen, wäre echt echt gut , vielen Dank
    ei :huh:
    Eine Excel Datei mit Beispieldaten kann helfen. So verstehe ich es, dass in Zeile C1 nur folgendes reinmuss: =wenn(a1=b1;"y";"x")
    danach die Formel runterkopieren.


    VBA kann z.B. mit

    Visual Basic-Quellcode

    1. cells(1,1).value="y"
    Werte eintragen
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    oder wenns ein makro werden soll:

    Visual Basic-Quellcode

    1. Sub vergleich()
    2. Dim rng As Range
    3. For Each rng In ActiveSheet.Range("A:A") 'Alle Zellen in A:A durchsuchen
    4. If rng.Value = "" Then Exit For 'Abbruch falls Zelle leer
    5. If rng.Value = rng.Offset(0, 1).Value Then
    6. rng.Offset(0, 2).Value = "gleich"
    7. Else
    8. rng.Offset(0, 2).Value = "verschieden"
    9. End If
    10. Next rng
    11. End Sub
    @petaod mal wieder viel kompakter wie meins.. ;)
    Aber ich krieg es nich zum rennen :D
    1. muss es nicht columns(2) sein.. da Spalte3 ja leer is und somit keine schnittmenge hat? ABer ich nehme an des war absicht =D
    2. er trägt mir die Formel so einfach nicht ein =( gibt laufzeitfehler1004. hab nu schon bissle rum probiert...
    englisch deutsch, die "" mit ' ersetzt...
    Haste noch ein Tip?
    Erwischt. Ich hab gerade kein Excel und kann's nicht live testen, deshalb ist es aus dem Kopf geschrieben.
    Musst die " durch "" ersetzen

    Und wenn Spalte 3 ausserhalb des UsedRange liegt, funktioniert es so nicht.

    Da hilft dann vielleicht folgender Kniff:

    Visual Basic-Quellcode

    1. Intersect(Columns(2), UsedRange).Offset(0,1).FormulaR1C1="=IF(RC[-1]=RC[-2],""x"",""y"")"

    Kannst mal testen
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    den kniff mit dem Offset hab ich schon selbst raus bekommen...
    Doppelte "" hab ich auch getestet.
    es klappt alles.. nur die IF funktion krieg ich nich rein auch ohne VAriabeln nich.

    Visual Basic-Quellcode

    1. Application.Intersect(ws.Columns(2), ws.UsedRange).Offset(0, 1).FormulaR1C1 = "=SQRT(2)"

    das klappt
    das nich:

    Visual Basic-Quellcode

    1. Application.Intersect(ws.Columns(2), ws.UsedRange).Offset(0, 1).FormulaR1C1 = "=IF(2=2;1;2)"

    kann da echt alles mögliche reinschreiben/ umschreiben bei dem If.. er will es nich ?( ?(

    Edit:
    Ok ich bin einfach nur blöd...

    Visual Basic-Quellcode

    1. Intersect(ws.Columns(2), ws.UsedRange).Offset(0, 1).FormulaR1C1 = "=IF(RC[-1]=RC[-2],""X"",""Y"")"

    im englischen sinds halt Kommas... :wacko: :whistling:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FloFuchs“ ()

    1. mag ich kein C/P
    2. würde das auch bei UsedRange fehlschlagen weil kein bezug definiert ist... :D
    3. selber knobeln macht mehr spaß.. will doch was lernen ;) ---> das mit den Kommas wird mir sicherlich nimma passieren :D (whoat a night) :D

    FloFuchs schrieb:

    würde das auch bei UsedRange fehlschlagen weil kein bezug definiert ist
    Ich habe nehme normalerweise Funktionen, die zu einem bestimmten Worksheet gehören, direkt in den Code-Bereich des Worksheets.
    Dann entfällt der fehlende Bezug.

    Ich habe mir sowieso angewöhnt ein Worksheet als (erweiterbares) Objekt zu betrachten.
    Die Worksheet-Objekte versehe ich im VBE mit einem vernünftigen Namen, damit sie sich auch aus anderen Klassen lesbar ansprechen lassen.
    Insbesondere die Erweiterung der Worksheets durch eigene Properties ist eine Coding-Methode, auf die ich nicht mehr verzichten möchte.
    Aber das geht jetzt stark ins OffTopic. Sorry.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --