PDA

Vollständige Version anzeigen : excel makro zurm listenvergleich und erstellung


gast
26.02.2004, 09:03
hi, ich habe ein problem, mein chef wünscht, sich ein makro, welches zwei tabellen vergleich (mit umsätzen) und in eine dritte hineinschreibt jweils dann nach dem jahr soritert. des weiteren soll unternehmer x nicht doppelt auftreten...hier mal das was cih geschrieben hab, bzw zusammengschnippselt, leider funktioniert es nicht ganz ;(

bsp einer ursprungtabelle

unternehmerx umsatz1, umsatz2...umsatz10 addieren und in liste drei ausgeben

Dim i, a, s, temp, summe, zeile, temp1, found


Sub Schaltfläche1_BeiKlick()
temp1 = tabelle3set(1, 1, "KONTONR")
temp1 = tabelle3set(2, 1, "NAME")
temp1 = tabelle3set(3, 1, "WAEHRUNG")
temp1 = tabelle3set(4, 1, "JAHR 2002")
temp1 = tabelle3set(5, 1, "JAHR 2003")
i = 1
zeile = 2

While tabelle1val(1, i) <> ""
summe = 0
For temp = 5 To 17 Step 1
If IsNumeric(tabelle1val(temp, i)) Then
summe = summe + tabelle1val(temp, i)
End If
Next
temp1 = tabelle3set(1, zeile, tabelle1val(1, i))
temp1 = tabelle3set(2, zeile, tabelle1val(2, i))
temp1 = tabelle3set(3, zeile, "€")
temp1 = tabelle3set(4, zeile, summe)
a = 1

While tabelle2val(1, a) <> ""
If tabelle2val(2, a) = tabelle1val(2, i) Then
summe = 0
For temp = 5 To 17 Step 1
If IsNumeric(tabelle2val(temp, a)) Then
summe = summe + tabelle2val(temp, a)
End If
Next
temp1 = tabelle3set(5, zeile, summe)

End If
a = a + 1
Wend

zeile = zeile + 1
i = i + 1
Wend

i = 1

While tabelle2val(1, i) <> ""
s = 2
found = 0
While tabelle3val(1, s) <> ""
If tabelle3val(2, s) = tabelle2val(2, i) Then
found = 1
End If
s = s + 1
Wend
If found = 0 Then
summe = 0
For temp = 4 To 18 Step 1
If IsNumeric(tabelle2val(temp, i)) Then
summe = summe + tabelle2val(temp, i)
End If
Next
temp1 = tabelle3set(1, zeile, tabelle2val(1, i))
temp1 = tabelle3set(2, zeile, tabelle2val(2, i))
temp1 = tabelle3set(4, zeile, summe)
zeile = zeile + 1
End If
i = i + 1
Wend

End Sub


Function tabelle1val(x, y)
tabelle1val = Tabelle1.Range(Tabelle1.Cells(y, x), Tabelle1.Cells(y, x)).Value
End Function


Function tabelle2val(x, y)
tabelle2val = Tabelle2.Range(Tabelle2.Cells(y, x), Tabelle2.Cells(y, x)).Value
End Function

Function tabelle3val(x, y)
tabelle3val = Tabelle3.Range(Tabelle3.Cells(y, x), Tabelle3.Cells(y, x)).Value
End Function


Function tabelle3set(x, y, setval)
Tabelle3.Range(Tabelle3.Cells(y, x), Tabelle3.Cells(y, x)).Value = setval
End Function


hoffe ihrkönnt mir helofen, vielen dank im vorraus

ein verzweifelter azubi

jinx
26.02.2004, 16:01
<font size="2" face="Century Gothic">Moin, azubi,

solange Du nicht aufzeigst, wie Deine Tabelle im Klartext aussieht, wirst Du mit dem Code keinen Blumentopf gewinnen können. Was willst Du in den Tabellen vergleichen? Was soll in die Ergebnistabelle? Warum nutzt Du nicht die Funktion Teilergebnis?P.S.: Irgendwie wirkt der bisherige Code auf mich stark überarbeitungsbedürftig: genaue Dimensionierungen, OPTION EXPLICIT nutzen. Der für mich eindeutige Weg wäre zusammenkopieren, sortieren (ggf. Spezialfilter nutzen) und Teilergebnisse bilden...</font>

Gast
27.02.2004, 08:24
naja wie geschrieben, ich habe eiglt keinen plan davon, deshalb auch schlecht programmiert, wenn man es denn so nennen kann +g+

also cih probiere es nochmal zu erklären, ich habe zwei listen, liste1 ist von 2002 und liste2 von 2003. In diesen liste steht:

KONTONR NAME WAEHRUNG EB_SALDO SOLL_1 SOLL_2...SOLL_13

so sieht das layout aus, nun möchte ich in der dritten tabelle die sollwerte zusammenzählen und unter dem entsprechenden jahr ausgeben, also so...

KONTONR NAME WAEHRUNG soll von JAHR 2002 soll vonJAHR 2003

ich hoffe es ist nun klarer...

die bekannten funktionen hab ich leider nicht genutzt, vllt kannst mir ja weiterhelfen


Warum nutzt Du nicht die Funktion Teilergebnis? <-- wo ist die, wie kann ich sie nutzen?


danke im vorraus

jinx
27.02.2004, 14:48
<font size="2" face="Century Gothic">Moin, azubi,

mein Vorschlag zum Vorgehen (für statische Werte): Summierung auf jedem Blatt für die Salden per Makro die relevanten Daten auf einer neuen Tabelle3 und in die jeweiligen Spalten eintragen lassen Tabelle sortieren lassen per Makro von unten her die Zeilen auf Doppler überprüfen, Daten in obere Zeile eintragen und untere löschenKlingt doch ganz einfach, oder? Alternativ kann man das z.B. auch über eine Pivot-Tabelle darstellen lassen...</font>

Mel
10.05.2004, 10:08
Ich brauch sowas ähnliches! Gibt's denn jetzt einen fertigen Code? Oder noch besser, irgendwelche Plug-Ins die das für einen machen?

Gruss
Melanie

jinx
10.05.2004, 10:14
<font size="2" face="Century Gothic">Moin, Melanie,

<i>sowas ähnliches</i> - wie was? Nein, ich habe nicht weiter daran gearbeitet, und ich kenne auch kein frei verfügbares AddIn, was dies erledigt (sonst hätte ich bereits damals einen Hinweis darauf gegeben).
</font>

Mel
10.05.2004, 10:28
Hallo Jinx,

Also, ich bekomme täglich ein Excel Sheet mit ein paar hundert Datensätzen, welche Bestellvorgänge und deren Liefertermine auflisten.

Ich muss nun diese Excel Sheets miteinander vergleichen und herausfinden, was sich geändert hat.

Letztendlich sollen nun diese Ergebnisse in ein neues Sheet konsolidiert werden, um Berechnungen hinsichtlich Verzug darstellen zu können. Hierbei sollen natürlich die Duplikate ausgeblendet werden.

Haste ne Idee?

jinx
10.05.2004, 10:36
<font size="2" face="Century Gothic">Moin, Mel,

nee, ich nicht - aber Hans hat z.B. einen Ansatz unter Tabellen vergleichen und bei Nichtübereinstimmung markieren (http://www.herber.de/mailing/136001h.htm) veröffentlicht, den Du sicherlich auf Deine Anforderungen anpassen kannst... ;)</font>

Mel
10.05.2004, 10:55
That's it! Danke