Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
672to676
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

delta bilden

delta bilden
29.09.2005 03:46:05
gnilk
Hallo Leute,
eigentlich wollte ich mit meinem alten Beitrag nur eine neue Anregung, damit ich mit meinem eigentlichen Problem weiterkomme. Da diese Liste aber nicht sensibel ist, kann ich sie Euch auch komplett zeigen.
Mein Makro steht so weit. Ich will jetzt eigentlich nur noch einen Preisvergleich machen. Schaut Euch mal in meiner Beispieldatei (https://www.herber.de/bbs/user/27028.xls) die Zellen H22:H24 genauer an.
Ich will, dass wenn der Preis unterschiedlich bzw. kleiner ist, dass ein Delta zwischen den Preisen gebildet wird. Das macht das Makro auch ganz gut. Das Problem ist jedoch, dass das Makro in Sheet1 bei Ordernummer 56190 Position 1 nur das Delta zwischen den Preisen von Ordernummer 56190 Position 0 (Sheet2) und Ordernummer 56190 Position 1 (Sheet1) bildet. Ich habe daher diese If not Sache in mein Makro eingebaut.
Schaut Euch doch bitte mal den Kram an und vielleicht faelt Euch ja was ein. Tut mir noch einmal leid, dass ich die Billige Datei reingestellt habe, wollte aber eine neue Anregung bekommen.
Hier noch einmal meine Beispieldatei:

Die Datei https://www.herber.de/bbs/user/27028.xls wurde aus Datenschutzgründen gelöscht

Falls Frage unklar, bitte nicht als beantortet ansehen. Vielleich kann jemand anderes damit etwas anfangen.
Dank und Ciao
Gnilk

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: delta bilden
29.09.2005 21:54:19
Hilbman
Hallo Gnilk,
wie zugesagt meine Lösung:

Private Sub CommandButton1_Click()
Dim xx As Worksheet, yy As Worksheet
Dim i As Long, j As Long, k As Integer
Set xx = Worksheets("Sheet1")
Set yy = Worksheets("Sheet2")
For i = 1 To xx.Cells(xx.Rows.Count, 1).End(xlUp).Row
If IsNumeric(xx.Cells(i, 1)) = True And _
IsNumeric(xx.Cells(i, 2)) = True And _
xx.Cells(i, 1) <> "" And _
xx.Cells(i, 2) <> "" Then
For j = 1 To yy.Cells(yy.Rows.Count, 1).End(xlUp).Row
If xx.Cells(i, 1) = yy.Cells(j, 1) And _
xx.Cells(i, 2) = yy.Cells(j, 2) Then
'       Farbe in die Zellen
xx.Activate
xx.Range(xx.Cells(i, 1), xx.Cells(i, 9)).Interior.Color = RGB(200, 255, 200)
'       Werte im Wertebereich feststellen und kopieren
If yy.Cells(j, 4) >= 0.85 * xx.Cells(i, 7) And _
yy.Cells(j, 4) <= 1.15 * xx.Cells(i, 7) Then
xx.Cells(i, 9) = xx.Cells(i, 7)
End If
'       Rest mit Delta summieren und Delta löschen
If yy.Cells(j, 4) + xx.Cells(i, 8) >= 0.85 * xx.Cells(i, 7) Then
xx.Cells(i, 9) = xx.Cells(i, 7)
ElseIf yy.Cells(j, 4) + xx.Cells(i, 8) < 0.85 * xx.Cells(i, 7) Then
xx.Cells(i, 8) = yy.Cells(j, 4) + xx.Cells(i, 8)
ElseIf xx.Cells(i, 7) = xx.Cells(i, 9) Then xx.Cells(i, 8) = ""
End If
End If
Next
End If
Next
End Sub

Bitte prüfe die Werte in der Spalte expected ob so ok. Wenn nicht müsste man die Formel ändern.
Gruß Hilbman
Anzeige
AW: delta bilden
30.09.2005 02:50:23
gnilk
Hallo Hilbman,
einfach und genial!!!! Vielen, vielen Dank. Als ich mal Deinen Code mit meinem verglichen habe, kam ich mir richtig dumm vor. Talent oder erlernt? Ich bin echt massiv beeindruckt.
Wie lange bist Du eigentlich schon am VBA programmieren? Ich frage mich manchmal, ob ich so etwas ueberhaupt auch mal spaeter programmieren kann. Ich kann zwar den Code lesen und verstehen, aber selbst so etwas zu programmieren.....weit von entfernt. Es ist wie eine Sprache die man versteht sie aber nicht sprechen kann. Ich denke, dass die Hoffnung zu letzt stirbt. Ich bin auch halt nur ein popliger Wirtschaftsingenieur (FH) in der Ausbildung (letztes Semester). Absolviere gerade in Australien mein letztes Praxissemester. Habe mir hier zum Ziel gesetzt VBA zu lernen. Bin jetzt schon sechs Wochen dabei es mit learning bei doing zu machen.
Jetzt noch einmal zu dem Makro. Die expected Spalte muesste eigentlich geloescht werden, wenn die Werte zwischen invoiced und Paul5 gleich sind. Wenn Du ein paar mal den Button dreuckst, dann wirst Du festestellen, dass dies nicht der Fall ist. Ich wuerde jetzt einfach den Teil von meinem aten Marko drueber laufen lassen, so dass bei Gleichheit expected geloescht wird. Es gibt mit Sicherheit auch eine schlankere und schlauere Loesung.
Koenntest Du mir noch einmal helfen?
Noch einmal vielen Dank fuer die schnelle und perfekte Hilfe
Ciao
Gnilk
Anzeige
andere Antwort bitte zuerst lesen
30.09.2005 02:54:35
gnilk
Hallo ich bin es noch einmal,
so sieht mein Code jetzt aus. Loescht bei Gleichheit das Delta. Kommt mir aber ein wenig suspekt vor. Lies Dir bitte auch mal meinen ersten Beitrag von heute zu Deiner Loesung durch. Wenn Du dies natuerlich schon gemacht hast, hat es sich eruebrigt.
Ciao
Gnilk
AW: andere Antwort bitte zuerst lesen
30.09.2005 06:06:34
Hajo_Zi
Hallo Gnilk,
ich sehe in Deinem Beitrag keinen Code!
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: andere Antwort bitte zuerst lesen
03.10.2005 02:48:48
gnilk
Hallo Hajo,
der Code war in einer meiner ersten Anfragungen. Es ist jetzt aber alles in Ordnung und meine Frage haben sich bis jetzt alle geklaert.
Trotzdem vielen Dank an Deinem Interesse an meinem Problem. Wuensche Dir einen guten Start in die Woche.
Ciao
Gnilk
PS: Du liest bestimmt noch was von mir! :)
AW: delta bilden
30.09.2005 06:45:23
Hilbman
Hallo gnilk,
Ändere den Code wie folgt ab:
' Rest mit Delta summieren und Delta löschen
If yy.Cells(j, 4) + xx.Cells(i, 8) >= 0.85 * xx.Cells(i, 7) Then
xx.Cells(i, 9) = xx.Cells(i, 7)
ElseIf yy.Cells(j, 4) + xx.Cells(i, 8) xx.Cells(i, 8) = yy.Cells(j, 4) + xx.Cells(i, 8)
lösche folgende Zeile (ist hier falsch !!)
ElseIf xx.Cells(i, 7) = xx.Cells(i, 9) Then xx.Cells(i, 8) = ""
End If
Füge die zwei folgenden Zeilen im Code ein
' Wert in Spalte expected löschen wenn Spalte 7 gleich Spalte 9
If xx.Cells(i, 7) = xx.Cells(i, 9) Then xx.Cells(i, 8) = ""
End If
Zu deiner Frage:
Ich befasse mich seit ca. 7 Jahren mit VBA. Später kam noch vb6 und jetzt neu die
Sprachen VB.NET und ASP.NET hinzu. Mit diesen Sprachen kann man eigenständige Applicationen entwickeln (.exe), die kein "Basisprogramm" wie Excel oder Word brauchen. Ich kann also so ziemlich alles was mit VB zu tun hat programmieren. Man lernt jedoch täglich dazu.
Resigniere nicht. Wie heißt es so schön : Übung macht den Meister.
Gruß Hilbman
Anzeige
AW: delta bilden
03.10.2005 02:46:13
gnilk
Hallo Hilbman,
vielen Dank fuer die Antwort. Habe noch ein wenig was geaendert. Lag aber an mir. Habe festgestellt, dass ich das Problem nicht richtig verstanden habe. Aber bei erneuten betrachten des Makros, konnte ich Deinen Code perfekt umbauen. Jetzt ist alles in Butter.
Habe die Zeile geloescht. Es ist echt gut einen Code zu haben, der leicht zu lesen ist.
Ich werde auch das VBA nicht aufgeben. Es ist eine gute Herausforderung. Es stimmt wirklich, dass man jeden Tag dazulernt. Vor Allem in meinem Stadium. Aber es macht richtig Spass, wenn man ein Problem geloest hat.
Ich wuensche Dir noch eine schoene Woche und Du liest bestimmt noch einmal was von mir.
Ciao
Gnilk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige