ich muss für ein Experiment Daten auswerten und würde das gerne automatisiert mit Excel tun. Anbei habe ich euch einen Screenshot gehängt, der mein Problem hoffentlich verdeutlicht. Ich weiß leider nicht, in welche Zelle ich eine Formel zur Berechnung einfügen muss und wie diese Formel dann lauten würde. Hoffentlich könnt ihr mir helfen!
Nochmal kurz zu meinem Problem. Ich habe eine Tabelle, in der bestimmte Werte dargestellt werden (diese bauen auch schon aufeinander auf, das war aber mit Summenformeln zu lösen). Rechts habe ich eine andere Tabelle, die von oben nach unten abgearbeitet werden soll. 1. Es soll nach der richtigen Periode in der linken Tabelle gesucht werden 2. Es soll überprüft werden, ob die Höhe kleiner als die ATP Menge ist a. wenn ja, dann soll die Höhe von der ATP Menge abgezogen werden und eine 1 in der ja/nein Spalte vermerkt werden b. wenn die Höhe größer als die ATP Menge ist, soll einfach nur eine 0 (oder ein nein oder so) in die Spalte geschrieben werden und nichts von der ATP Menge abgezogen werden.
Vielleicht kann sich das von euch mal jemand anschauen und mir weiterhelfen!
da hier niemand Lust hat Bilder nachzu bauen....such dir die ATP Menge zur Periode mit dem Sverweis. Darum baust du eine Wenn-Dann Formel: =wenn(J2 Die 1 oder ermittelst du nach dem gleichen Schema.
Formeln können niemals bestehende Zellen überschreiben, das geht nur mit VBA. Ansonsten musst du mit einer Hilfsspalte arbeiten. Für weitere Hilfe musst du eine Beispielmappe hochladen, deine Datei baue ich sicher nicht nach.
Klicke in deiner Datei mit der rechten Maustaste auf das Tabellenblatt und wähle "Code anzeigen". Es öffnet sich der VBA-Editor. Im großen weißen Fenster trägst du diesen Code ein:
Code:
Sub Abgleich() Dim Suche As Range Dim i As Integer
Application.ScreenUpdating = False For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Set Suche = Columns(1).Find(what:=Cells(i, "I"), lookat:=xlWhole, LookIn:=xlValues) If Not Suche Is Nothing Then If Cells(i, "J") < Cells(Suche.Row, "E") Then Cells(Suche.Row, "E") = Cells(Suche.Row, "E") - Cells(i, "J") Cells(i, "K") = 1 ElseIf Cells(i, "J") > Cells(Suche.Row, "E") Then Cells(i, "K") = 0 End If End If Next i Application.ScreenUpdating = True End Sub
Schließe den VBA-Editor wieder. Unter Reiter Ansicht hast du ganz rechts den Button "Makros". Dort kannst du das Makro "Abgleich" ausführen und es sollte alles wie gewünscht erledigt werden. Noch ein Hinweis: Im Fall, dass Höhe und ATP Menge gleich sind, passiert nichts weiter. Dazu war keine Angabe vorhanden.
Schöne Grüße Berni
Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:1 Nutzer sagt Danke an MisterBurns für diesen Beitrag 28 • phia
Funktioniert super! Vielen Dank euch! Was müsste ich an dem Code denn noch verändern, dass es die Höhe auch von der ATP Menge abzieht, wenn beide gleich sind?
Ich bräuchte nochmal eure Hilfe! Zu meiner einen Tabelle sind jetzt noch weitere Tabellen für andere Produkte/ Lager hinzugekommen. Jetzt müsste vorher erst durchsucht werden, welche Tabelle verwendet werden soll. Wie mache ich das denn?
ich habe mir das jetzt mal angeschaut und du erhältst dazu von mir folgende Rückmeldung:
1. Salamitaktik ist mir ein Gräuel. Ich mag es nicht eine Lösung zu erarbeiten, damit dann mit anderen Voraussetzungen auf einmal eine weitere Lösung erstellt werden muss. Wieso kommst du nicht gleich damit, dass es sich letztlich nicht um eine, sondern um mehrere Tabellen handeln wird? Doppelte und - noch schlimmer - sinnlose Arbeit hasse ich. Und wenn du zuerst nicht gewusst hast, dass es am Ende mehrere Tabellen werden, dann hast du schlecht geplant. Du musst dir am Anfang ein Konzept überlegen und genau festlegen, wie es am Ende aussehen soll. Beim Hausbau fällt dir auch nicht mittendrin ein, dass ein Raum dazukommen soll.
2. Der Aufbau ist ganz ganz ganz schlecht. Gleichartige Daten gehören IMMER untereinander in EINE Tabelle. Das erleichtert einerseits dir das Hinzufügen von Daten, andererseits auch das Suchen danach. Denn mit dem derzeitigen Aufbau ist die Suche umständlich. Und was ist, wenn dann irgendwann noch weitere Tabellen hinzukommen? Wirst du dann imstande sein, den Code entsprechend anzupassen?
Dein jetziger Aufbau widerspricht allen guten Regeln der Datenverarbeitung und wird dir nur Probleme bereiten.
Leider wusste ich das nicht früher und es tut mir wirklich leid, dass deine vorherige Arbeit damit umsonst war! Ich bin dir trotzdem sehr dankbar dafür, da ich sonst vermutlich nie VBA benutzt hätte!
Ist es dann schlauer, die 4 Tabellen untereinander zu schreiben? Ich dachte, wenn ich sie nebeneinander schreibe, wäre es übersichtlicher, da es sich ja immer um die gleiche Periode handelt! Aber danke für den Tipp!