Wenn Werte gleich, dann trage Wert in bestimmte Zelle ein...

  • Excel

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von MartinB..

    Wenn Werte gleich, dann trage Wert in bestimmte Zelle ein...

    Hallo Helferlein,

    ich weiß nicht ob mein Problem über VBA oder auch mit SVerweis o.ä. zu lösen ist! (Bin in Excel nicht so bewandert )

    Mein Problem:

    Ich habe eine Liste mit Stammdaten:



    jetzt bekomme ich eine Rechnung in Tabellenform



    diese Tabellen sollen verglichen werden und wenn die Werte exakt gleich sind, sollen sie in eine dritte Tabelle eingetragen werden die so aussieht:



    wie kann ich das realisieren?

    Die Rechnung ist nicht nach Personen oder sonstigem geordnet.
    Nach erfolgreichem Eintrag in die Tabelle soll beim nächsten mal in die nächste Zeile geschrieben werden.

    Vielen Dank für eure Hilfe
    Was genau soll denn verglichen werden ?
    Die 3 Spalten Name, Kostenstelle und Rufnummer&Name ?
    Wenn ja, dann gibts doch einen HAufen Möglichkeiten zu vergleichen.
    In Excel gibts zB Find. Damit suchst du erst nach Namen, hast du einen gleichen gefunden prüfst du ob die anderen SpaltenInhalte auch übereinstimmen.

    Gruß Mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo Mono, danke für deine Antwort!

    wie funktioniert diese "find-funktion" in meinem Fall? ?(

    Hab mal gegogglet und finde dort ausschließlich VBA-Code, welchen ich aber nicht auf meine Tabellen übertragen konnte.

    Gibt es vielleicht auch eine Möglichkeit das ohne VBA-Code zu lösen?
    Ich hab es wirklich versucht... komme aber nicht weiter...
    Wenn ich google ist die Pivot-Tabellenerstellung an vielen Beispielen erklärt aber ich versteh es einfach nicht.

    Ich wär sehr dankbar, wenn mir jemand das Schritt für Schritt erlären könnte...

    Hab mal meine Testmappe hochgeladen...

    wenn mir jemand ernsthaft helfen möchte kann er mich gern per Privatnachricht anschreiben.

    Solange probier ich es weiter alleine aus! Falls ich es doch schaffen sollte, werde ich für alle anderen hier den Lösungsweg posten...

    Vielen Dank im Vorraus
    Dateien
    Hallo Martin,

    mit Pivot kenne ich mich auch nicht so aus. Allerdings programmiere ich mir solche Sachen für die Arbeit selbst(bin allerdings ein Laie). Aus meiner Sicht sind da aber folgende Punkte für mich nicht klar:
    1) Das Feld Name wird in allen 3 Reitern benutzt. Ist Name eindeutig? Wenn ja weshalb dann die Überprüfung der Rechnung mit den Stammdaten über alle 3 Spalten (Name + Kostenstelle + Rufnummer)?! Wenn nein, dann ist der Name in dem Reiter Wertempfänger nicht ausreichend, da eben nicht eindeutig.
    2) Was ist wenn in den Rechnungen ein neuer Name auftaucht? Soll dieser in den Stammdaten ergänzt werden? Wenn ja, soll ein Hinweis erscheinen, dass neue Stammdaten eingepflegt wurden?
    3) Können sich die Daten in den Stammdaten ändern? Also bspw. kann die Kostenstelle wechseln bzw. die Rufnummer? Was dann? Sollen die Stammdaten aktualisiert werden, soll eine weitere Spalte mit einem Datum versehen werden, dass kennzeichnet, dass es Änderungen gab? ...
    4) Ist es immer so, dass die Rechnung für alle Personen immer für ein bestimmtes Monat ist und kann pro Monat immer nur eine Rechnung pro Person sein? Ist es möglich, dass bspw. eine Person in einem Monat einmal nichts zahlt? Hier würde ich bspw. empfehlen, dass entweder in der Rechnung eine Spalte mit dem Monat ist, oder zumindest bei der Aktualisierung der Wertempfänger nach einem bestimmten Monat nachgefragt wird.

    Wenn mir obige Punkte klar wären, dann würde ich so ein Programm zum Spaß mal schreiben, allerdings wie oben schon erwähnt - ich bin halt ein Laie - das würde ich mir allerdings ohne weiteres zutrauen (der Code wäre möglicherweise für einen Profi lächerlich, aber ich bin mir sicher, dass er funktionieren würde).

    lg
    Free
    Hallo Martin,

    habe jetzt mal sowas programmiert. Verwende allerdings das Excel 2007 hoffe, dass durch das Speichern als Excel 97-2003 dennoch alles funktioniert (habe da 2 Meldungen erhalten, die aber aus meiner Sicht keine Auswirkungen haben).

    Wie allerdings in meinem vorherigen Beitrag angeführt, sind aus meiner Sicht noch ein paar Punkte offen.

    Folgendes kann das Programm:
    1) Es prüft die Rechnung gegen die Stammdaten. Falls alle 3 Spalten ident sind, dann wird in Wertempfänger der Rechnungsbetrag eingefügt (sofern dort der Name auch vorhanden ist - falls es mehrere gleiche Namen gibt, wird nur in den 1-sten eingetragen). Fall mind. eine Spalte nicht ident ist gibt es die Fehlermeldung: Stammdaten nicht vorhanden. Das selbe passiert, falls es überhaupt noch keine Stammdaten zu einem Rechnungsbetrag gibt.
    2) Es wird direkt ein Monat am Anfang abgefragt. In dieses Monat wird hineingeschrieben. Falls im Reiter Wertempfänger schon was stand, wird es überschrieben (wäre aber einfach, dass das addiert wird, oder auch hier einen Hinweis/Fehlermeldung zu geben).
    3) Falls Rechnungsdaten und Stammdaten übereinstimmen, aber im Reiter Wertempfänger kein Eintrag ist, dann gibt es auch eine Fehlermeldung.

    Falls Du die für mich unklaren Punkte unten beantwortest, würde ich das Programm wahrscheinlich Deinen Wünschen gemäß anpassen. Auch wenn Du ggf. weitere Punkte hättest.

    lg
    Free

    p.s.: Falls ein Profi schwere Schwachstellen findet, dann würde ich mich über Verbesserungsvorschläge freuen :)
    Dateien
    Hallo FreeRider74,

    vielen Dank für deine Mühe.
    Ich war im Urlaub und war somit nicht im Internet.

    Zu deinen Fragen:
    Ich habe es jetzt mal extrem vereinfacht.
    Wenn die Zeile (Stammdaten) "Rufnummer & Name" gleich ist mit der Zeile (Rechnung) "Rufnummer & Name", dann soll mir der "Betrag" (Rechnung) in die passen Spalte/Zeile (Wertempfänger) eingetragen werden.

    "Rufnummer & Name" ist eindeutig und kommt nicht mehrfach vor!

    Jedoch können neue "Rufnummern & Namen" dazukommen und auch welche verschwinden. Dies ist aber nicht der Regelfall.

    Es sollte kein Wert überschrieben werden.
    Es gibt keine Rechnung mit keinem Wert! Und jede "Rufnummer & Name" bekommt jeden Monat nur eine Rechung.

    Ich hoffe das hilft dir / mir weiter :D

    Ich versuche es jetzt mal selbst mit dem vergleichen.

    Wenn mir jemand das mit Pivottabellen erleichtern könnte wär ich sehr dankbar weil ich das nicht verstehe.

    Meine Frage dazu:
    Ich bräuchte die Tabelle Stammdaten ja gar nicht, oder? Ich könnte doch theoretisch die Daten von "Rechnung" mit den Daten von "Wertempfänger" vergleichen.

    Vielen Dank nochmal für die Hilfe
    Dateien
    • Testmappe.xls

      (13,72 kB, 573 mal heruntergeladen, zuletzt: )
    Hallo,

    ich nutze Excel 2007. Kann mich nicht mehr so genau an 2003 erinnern (schätze dass Du das nutzt). Habe mal Deinem Excel ein Sheet mit Pivot ergänzt (vielleicht hiflt Dir es zumindest, wenn Du siehst wie sowas dann aussehen kann). Ich würde das dann so lösen - also mit einer zusätzlichen Spalte des Rechnungsmonats.
    Wie Du siehst brauchst Du das Sheet Stammdaten nicht. Das ist aus meiner Sicht nur dann interessant, wenn Du eine zusätzliche Liste mit diversen zusätzlichen Informationen willst.

    Da ich auch kein Pivot Experte bin, weiß ich auch nicht, ob es möglich ist, das automatisch zu aktualisieren (wenn Du also eine weitere Rechnung anhängst). Insofern befürchte ich, dass das nach jeder neu hinzugefügten Rechnung erneut erstellt werden muss. Allerdings geht das sehr flott, wenn man weiß wie es geht.

    lg
    Free

    p.s.: Falls ich mal vor nem Excel 2003 sitze, dann schaue ich mal, wie das dort war. Ansonsten hoffe ich, dass Dir jemand anderer mehr helfen kann.
    Dateien
    Ich hab es jetzt hinbekommen...
    ich arbeite übrigens auch mit 2007 aber ich kann die Datei nicht als .xlsx datei hochladen.

    Ich habe noch eine Frage, weil ich jetzt vor einem neuem Problem stehe:

    Ich muss die Rufnummer vom Namen trennen, d.h. die Rufnummer muss seperat in einer Spalte stehen und der Name auch.

    Ich habe gegooglet und es mit mit den Funktionen LINKS und RECHTS probiert, aber irgendwie klappt das nicht!

    Ich möchte es immer am ersten Leerzeichen getrennt haben. Könnte man das vielleicht per VBA lösen?

    Vielen Dank für deine Hilfe FreeRider

    Spalte bei Leerzeichen teilen!

    Hallo nochmal

    Vielleicht habe ich micht nicht deutlich ausgedrückt und lad hier nochmal was hoch.

    Bei meiner Tabelle habe ich jetzt eine Spalte mit Nummer & Namen drin. Diese sind durch ein Leerzeichen getrennt. Ich möchte das dich Nummer abgeschnitten wird und in die Spalte "B" geschrieben wird!

    Ich weiß das man das über Daten->Text in Spalten machen könnte, aber dort trennt mir Excel bei allen Leerzeichen in mehrere Spalten auf. z.B. nach dem Vornamen.
    Ich möchte dies per ButtonClick steuern.

    Die Nummern und Namen habe verschiedene Längen. Also geht es nicht mit einer einfachen Formel von Excel (glaub ich).

    Ich hoffe ihr könnt mir auf die Sprünge helfen.
    Bilder
    • beispielbild.jpg

      18,11 kB, 680×66, 418 mal angesehen
    Hallo Martin,

    denke folgendes bringt Dich weiter:

    Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim Zeichenlaenge As Byte
    3. Dim Laenge_zweiter_Teil As Byte
    4. Dim Zeichenfolge As Variant
    5. Dim Zeile1 As Integer
    6. Dim Spalte1 As Integer
    7. Dim Zielspalte1 As Integer
    8. Dim Zielspalte2 As Integer
    9. Zeichenfolge = " "
    10. Zeile1 = 2
    11. Spalte1 = 1
    12. Zielspalte1 = 1
    13. Zielspalte2 = 2
    14. Do While Tabelle1.Cells(Zeile1, Spalte1) <> ""
    15. Zeichenlaenge = Len(Tabelle1.Cells(Zeile1, Spalte1))
    16. erster_Teil = Left(Tabelle1.Cells(Zeile1, Spalte1), (InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge) - 1))
    17. Laenge_zweiter_Teil = Zeichenlaenge - InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge)
    18. Tabelle1.Cells(Zeile1, Zielspalte2) = Right(Tabelle1.Cells(Zeile1, Spalte1), Laenge_zweiter_Teil)
    19. Tabelle1.Cells(Zeile1, Zielspalte1) = erster_Teil
    20. Zeile1 = Zeile1 + 1
    21. Loop
    22. End Sub


    lg
    Free
    Hallo,

    ja sorry, das Programm macht das Ganze nur einmal, dann suckt es :cursing:

    Ergänze folgendes bei den Variablen:
    Dim Spalte2 As Integer
    Spalte2 = 2

    Eine Zeile nach dem do while...:
    If Tabelle1.Cells(Zeile1, Spalte2) = "" Then

    und vor Zeile1 = Zeile1 + 1:
    End If

    Jetzt wird zusätzlich geprüft, ob in der Spalte B bereits was steht, wenn ja, dann macht das Programm da nichts mehr. Wenn nein, dann sollte es wieder korrekt teilen, sofern zumindest eine Leerstelle in Spalte A ist. Somit solltest Du Zeilen hinzufügen können, die dann wieder geteilt werden.

    lg
    Free

    p.s.: Daran merkt man halt, dass ich (noch) Laie bin ;)