PDA

Vollständige Version anzeigen : Bitte um Hilfe bei Excel SummeWenn


Thomas1966
01.08.2012, 18:13
Hallo liebe Forumsmitglieder,

bitte dringend um Hilfe bei folgendem Problem:
Ich bekomme jede Woche 3x eine völlig unmöglich aufgebaute Excel-Datei auf den Tisch und bin den ganzen Tag damit beschäftigt diese zu bearbeiten und würde mir jetzt gerne mittels Makro/VBA die Arbeit etwas erleichtern.
Jetzt mein aktuelles Problem bzw. Anliegen: Muß in der Datei (im Anhang ein kleiner Auszug davon) eine Kundenübersicht erstellen, sprich alle Kunden auflisten und eine Summe Ihrer Buchungen erstellen. Mein VBA ist leider ganz schwach, hab aber einen Code gefunden den ich nach 2 Tagen try&error so anpassen konnte das er mir zumindest mal die Kunden richtig auflistet, ganz egal wo sie in dieser Kraut+Rüben-Datei eingetragen wurden. Aber weiter komm ich nicht-die enstprechenden Summen pro Kunde abzugreifen ist mir in den letzten Tagen nicht gelungen. Ich würde mich sehr freuen wenn sich einer der hier anwesenden Spezialisten das vielleicht kurz anschaut und mir eine Lösung aufzeigen könnte?? Zur Info noch: die Summen können sowohl über die Spalte rechts neben dem Kundennamen als auch über den Wert in Spalte C gebildet werden, ich könnte mit beidem was anfangen.
Vielen herzlichen Dank schon mal im voraus an alle die mir hier vielleicht helfen können!!
lg thomas

Backowe
01.08.2012, 21:06
Hi,

vielleicht passt es so:
Sub AuflistungKundenUndSummenbildungProKunde()
Dim c As Object
Dim firstAddress As String
Dim lngZeile As Long, Zeile As Long
Dim intSpalte As Integer, Spalte As Integer, intI As Integer
Dim Summe As Double
lngZeile = Sheets("Tabelle1").Cells.Find(What:="*", After:=Sheets("Tabelle1").Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
intSpalte = Sheets("Tabelle1").Cells.Find(What:="*", After:=Sheets("Tabelle1").Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Sheets("Tabelle1").Range("A:B").ClearContents
For Spalte = 4 To intSpalte Step 2
For Zeile = 3 To lngZeile
If Application.IsText(Sheets("Tabelle1").Cells(Zeile, Spalte)) And Application.IsNumber(Application.Match(Sheets("Tabelle1").Cells(Zeile, Spalte), Sheets("Tabelle2").Columns(1), 0)) = False Then
Tabelle4.Range("A" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row + 1) = Sheets("Tabelle1").Cells(Zeile, Spalte)
End If
Next
Next
For intI = 3 To Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row
With Sheets("Tabelle1").Range(Sheets("Tabelle1").Cells(3, 1), Sheets("Tabelle1").Cells(lngZeile, intSpalte))
Set c = .Find(Sheets("Tabelle2").Cells(intI, "A"), LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Summe = Summe + c.Offset(0, 1)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Tabelle4.Cells(intI, "B") = Summe
Summe = 0
Next
End Sub

josef e
01.08.2012, 21:24
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Thomas,

die Ausgabe erfolgt auf Tabelle2.

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><br /><b><span style="color:#0000FF"; >Sub</span> Kunden_einlesen()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> vntName() <span style="color:#0000FF"; >As</span> Variant, dblValue() <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Double</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> lngCol <span style="color:#0000FF"; >As</span> Long, lngRow <span style="color:#0000FF"; >As</span> Long, lngIndex <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Long</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> vntRet <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> vntName(1 <span style="color:#0000FF"; >To</span> 1)<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> dblValue(1 <span style="color:#0000FF"; >To</span> 1)<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> Sheets(<span style="color:#808080"; >"Tabelle1"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> lngCol = 4 <span style="color:#0000FF"; >To</span> .Cells(1, .Columns.Count).End(xlToLeft).Column <span style="color:#0000FF"; >Step</span> 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Application.CountA(.Columns(lngCol)) &gt; 0 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> lngRow = 2 <span style="color:#0000FF"; >To</span> .Cells(.Rows.Count, lngCol).End(xlUp).Row<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Trim(.Cells(lngRow, lngCol)) &lt;&gt; "" <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntRet = Application.Match(.Cells(lngRow, lngCol), vntName, 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> IsNumeric(vntRet) <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> IsNumeric(.Cells(lngRow, lngCol + 1)) <span style="color:#0000FF"; >Then</span> dblValue(vntRet) = dblValue(vntRet) + .Cells(lngRow, lngCol + 1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lngIndex = lngIndex + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> <span style="color:#0000FF"; >Preserve</span> vntName(1 <span style="color:#0000FF"; >To</span> lngIndex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> <span style="color:#0000FF"; >Preserve</span> dblValue(1 <span style="color:#0000FF"; >To</span> lngIndex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntName(lngIndex) = .Cells(lngRow, lngCol)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> IsNumeric(.Cells(lngRow, lngCol + 1)) <span style="color:#0000FF"; >Then</span> dblValue(lngIndex) = .Cells(lngRow, lngCol + 1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> lngIndex &gt; 0 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> Sheets(<span style="color:#808080"; >"Tabelle2"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Range(<span style="color:#808080"; >"A1"</span>).Resize(lngIndex, 1) = Application.Transpose(vntName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Range(<span style="color:#808080"; >"B1"</span>).Resize(lngIndex, 1) = Application.Transpose(dblValue)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /></span></nobr></div>


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

Thomas1966
02.08.2012, 06:58
Guten Morgen!!

DANKESCHÖN Jürgen und Sepp - beide Lösungen funktionieren einwandfrei!!!! Hab gerade beide in der Test-Datei die ich hochgeladen hatte probiert, Ergebniss 100% perfekt. Vielen lieben Dank an euch beide, hab wirklich eine Riesenfreude-denn durch Eure Hilfe hat ja auch mein bescheidener Erfolge das ich die Kundennamen auslesen konnte ja auch erst Sinn bekommen und in der Praxis bedeutet Eure Lösung eine wirkliche Erleichterung für mich!!! Werd jetzt daran gehen Euren VBA-Code an die Original-Tabellen anzupassen, denke das schaffe ich schon alleine. Aber eine Bitte hätte ich noch wenn es nicht zu unverschämt ist: In einem der nächsten Arbeitsschritte muß ich alle Kundennamen einkürzen (wird zum Schluß als .csv exportiert und in eine Maschine eingelesen und die hat Probleme mit langen Namen etc.) Jetzt macht der Code ja so wie ich es sehe folgendes: Such was-und wenn du was findest zähl das rechts davon zusammen. Könnte man das noch so anpassen das er nicht zählt sondern ersetzt-entweder über einen Wert denn ich vorher in einer Spalte C in Blatt 2 reinschreibe, oder über eine Inputbox oder so?
Herzlichen Dank nochmal und lg
Thomas

Backowe
02.08.2012, 08:18
Hallo Thomas,

in deiner Tabelle steht nur Kunde1 bis KundeN, mach bitte mal ein Bsp. wie das Einkürzen des Kundennamen aussehen soll?

Thomas1966
02.08.2012, 11:05
Hallo Jürgen,

Danke Dir das Du Dich auch diesem Problem widmest!!
Also-wenn ich deinen VBA-Code ausführe habe ich ja zb. folgendes in Blatt2:

Kundenname lang Summe Kundenname kurz

Kerzenhaus 5172 Kerzenhaus
Norma AT, Verteilung KW 30 29427 Norma A
Zweirad Stadler Beilage 200000 Stadler
OBI-Spittal KW30 2012 - 3337 Obi
DBL, KW 30, Verteilung 77480 DBL

Also die ersten beiden Spalten genauer gesagt - ich hab mir dann eben laienhaft vorgestellt (wenn jetzt eh alles so schön gefunden und summiert wird) das ich entweder eine Spalte mit den gekürzten Namen befülle und dann nach den langen Namen gesucht wird (in Blatt1) und diese durch die kurzen ersetzt werden oder aber (das mach ich bis jetzt manuell so) das im Blatt1 jeder Kundenname(lang)gesucht wird und eine Inputbox oderdgl. kommt in der ich den kurzen Namen eingebe und über sowas wie suchen/alle ersetzen die Namen ersetzt werden. Aber ich hab schon gemerkt das ich mir das zu einfach vorgestellt hab-schließlich muß ich ja auch die langen Namen irgendwie sichern-die brauch ich für andere Belange ja auch noch, und wenn ich deinen Code ein 2.mal ausführe nachdem gekürzt wurde wären die ja weg.
Regeln fürs kürzen gibt es nicht-möglichst kurz, eindeutig, keine Sonderzeichen, also ganz individuell.
Danke Dir nochmal und lg
Thomas

Backowe
02.08.2012, 17:46
Hallo Thomas,

ich habe jetzt den String einfach bis zum ersten Leerzeichen abgetrennt, hoffe das passt so! :-)

<pre><span style="font-family=Courier New,Arial; font-size=10pt"; ><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span>
<b><span style="color:#000080"; >Sub</span> AuflistungKundenUndSummenbildungProKunde()</b>
<span style="color:#000080"; >Dim</span> c <span style="color:#000080"; >As</span> <span style="color:#000080"; >Object</span>
<span style="color:#000080"; >Dim</span> firstAddress <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>
<span style="color:#000080"; >Dim</span> lngZeile <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span>, Zeile <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span>
<span style="color:#000080"; >Dim</span> intSpalte <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>, Spalte <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>, intI <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>
<span style="color:#000080"; >Dim</span> Summe <span style="color:#000080"; >As</span> <span style="color:#000080"; >Double</span>
lngZeile = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells.Find(What:=<span style="color:#800000"; >"*"</span>, After:=Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(<span style="color:#800000"; >"A1"</span>), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
intSpalte = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells.Find(What:=<span style="color:#800000"; >"*"</span>, After:=Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(<span style="color:#800000"; >"A1"</span>), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(<span style="color:#800000"; >"A:C"</span>).ClearContents
<span style="color:#000080"; >For</span> Spalte = 4 <span style="color:#000080"; >To</span> intSpalte <span style="color:#000080"; >Step</span> 2
<span style="color:#000080"; >For</span> Zeile = 3 <span style="color:#000080"; >To</span> lngZeile
<span style="color:#000080"; >If</span> Application.IsText(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte)) <span style="color:#000080"; >And</span> Application.IsNumber(Application.Match(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), _
Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Columns(1), 0)) = <span style="color:#000080"; >False</span> <span style="color:#000080"; >Then</span>
Tabelle4.Range(<span style="color:#800000"; >"A"</span> & Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row + 1) = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte)
Tabelle4.Range(<span style="color:#800000"; >"C"</span> & Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row) = Left(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), _
InStr(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), <span style="color:#800000"; >" "</span>) - 1)
<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span>
<span style="color:#000080"; >Next</span>
<span style="color:#000080"; >Next</span>
<span style="color:#000080"; >For</span> intI = 3 <span style="color:#000080"; >To</span> Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row
<span style="color:#000080"; >With</span> Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(3, 1), Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(lngZeile, intSpalte))
<span style="color:#000080"; >Set</span> c = .Find(Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(intI, <span style="color:#800000"; >"A"</span>), LookIn:=xlValues)
<span style="color:#000080"; >If</span> <span style="color:#000080"; >Not</span> c <span style="color:#000080"; >Is</span> <span style="color:#000080"; >Nothing</span> <span style="color:#000080"; >Then</span>
firstAddress = c.Address
<span style="color:#000080"; >Do</span>
Summe = Summe + c.Offset(0, 1)
<span style="color:#000080"; >Set</span> c = .FindNext(c)
<span style="color:#000080"; >Loop</span> <span style="color:#000080"; >While</span> <span style="color:#000080"; >Not</span> c <span style="color:#000080"; >Is</span> <span style="color:#000080"; >Nothing</span> <span style="color:#000080"; >And</span> c.Address &lt;&gt; firstAddress
<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span>
<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span>
Tabelle4.Cells(intI, <span style="color:#800000"; >"B"</span>) = Summe
Summe = 0
<span style="color:#000080"; >Next</span>
<b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b>
</span></pre>

Thomas1966
02.08.2012, 19:46
Hallo an meine freundlichen Helfer,

hab jetzt doch ein paar Probleme festgestellt:

@Sepp: Dein Code funktioniert wunderbar und ich hab ihn auch schon in ein paar meiner Tabellen eingebaut-allerdings hab ich einen recht dummen Fehler gemacht bei der Datei die ich hochgeladen hatte: Um Sie möglichst einfach zu gestalten hab ich da etwas zu viel herausgelöscht: In den Spalten in denen die Kundennamen stehen sind nähmlich auch Zahlen (oben und unten)-und die werden jetzt natürlich auch als Kunde mit aufgeführt:-(( Allerdings haben diese (unerwünschten) Werte in der jeweils rechten Spalte keine Mengenangabe-im Unterschied zu den (erwünschten) Kundennamen, könntest Du mir bitte Deinen Code noch so anpassen das er diese Zahlen nicht als Kunde auflistet?? Zur Illustration hab ich meine Tabelle ergänzt und Deinen Code eingefügt und häng diese nochmal an.

@Jürgen
Bekomme leider eine Fehlermeldung:
Laufzeitfehler 5 - Ungültiger Prozeduraufruf oder ungültiges Argument
bei
Tabelle4.Range("C" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row) = Left(Sheets("Tabelle1").Cells(Zeile, Spalte), _
InStr(Sheets("Tabelle1").Cells(Zeile, Spalte), " ") - 1)
Diese Tabelle4 ist mir ja ohnehin ein Rätsel-die hab ich ja gar nicht-und trotzdem funktioniert Dein erster Code tadellos??:-))

Nochmal Danke und lg
Thomas

Backowe
02.08.2012, 19:51
Hallo Thomas,

ich habe den Code jetzt abgeändert!

<pre><span style="font-family=Courier New,Arial; font-size=10pt"; >

<b><span style="color:#008000"; >' **************************************************************
' Modul: Modul5 Typ = Allgemeines Modul
' **************************************************************</span></b>

<span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span>
<b><span style="color:#000080"; >Sub</span> AuflistungKundenUndSummenbildungProKunde()</b>
<span style="color:#000080"; >Dim</span> c <span style="color:#000080"; >As</span> <span style="color:#000080"; >Object</span>
<span style="color:#000080"; >Dim</span> firstAddress <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>
<span style="color:#000080"; >Dim</span> lngZeile <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span>, Zeile <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span>
<span style="color:#000080"; >Dim</span> intSpalte <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>, Spalte <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>, intI <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>
<span style="color:#000080"; >Dim</span> Summe <span style="color:#000080"; >As</span> <span style="color:#000080"; >Double</span>
lngZeile = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells.Find(What:=<span style="color:#800000"; >"*"</span>, After:=Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(<span style="color:#800000"; >"A1"</span>), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
intSpalte = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells.Find(What:=<span style="color:#800000"; >"*"</span>, After:=Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(<span style="color:#800000"; >"A1"</span>), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Range(<span style="color:#800000"; >"A:C"</span>).ClearContents
<span style="color:#000080"; >For</span> Spalte = 4 <span style="color:#000080"; >To</span> intSpalte <span style="color:#000080"; >Step</span> 2
<span style="color:#000080"; >For</span> Zeile = 3 <span style="color:#000080"; >To</span> lngZeile
<span style="color:#000080"; >If</span> Application.IsText(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte)) <span style="color:#000080"; >And</span> Application.IsNumber(Application.Match(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), _
Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Columns(1), 0)) = <span style="color:#000080"; >False</span> <span style="color:#000080"; >Then</span>
Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Range(<span style="color:#800000"; >"A"</span> & Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row + 1) = Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte)
Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Range(<span style="color:#800000"; >"C"</span> & Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row) = Left(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), _
InStr(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(Zeile, Spalte), <span style="color:#800000"; >" "</span>) - 1)
<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span>
<span style="color:#000080"; >Next</span>
<span style="color:#000080"; >Next</span>
<span style="color:#000080"; >For</span> intI = 3 <span style="color:#000080"; >To</span> Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(Rows.Count, <span style="color:#800000"; >"A"</span>).End(xlUp).Row
<span style="color:#000080"; >With</span> Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Range(Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(3, 1), Sheets(<span style="color:#800000"; >"Tabelle1"</span>).Cells(lngZeile, intSpalte))
<span style="color:#000080"; >Set</span> c = .Find(Sheets(<span style="color:#800000"; >"Tabelle2"</span>).Cells(intI, <span style="color:#800000"; >"A"</span>), LookIn:=xlValues)
<span style="color:#000080"; >If</span> <span style="color:#000080"; >Not</span> c <span style="color:#000080"; >Is</span> <span style="color:#000080"; >Nothing</span> <span style="color:#000080"; >Then</span>
firstAddress = c.Address
<span style="color:#000080"; >Do</span>
Summe = Summe + c.Offset(0, 1)
<span style="color:#000080"; >Set</span> c = .FindNext(c)
<span style="color:#000080"; >Loop</span> <span style="color:#000080"; >While</span> <span style="color:#000080"; >Not</span> c <span style="color:#000080"; >Is</span> <span style="color:#000080"; >Nothing</span> <span style="color:#000080"; >And</span> c.Address &lt;&gt; firstAddress
<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span>
<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span>
Tabelle4.Cells(intI, <span style="color:#800000"; >"B"</span>) = Summe
Summe = 0
<span style="color:#000080"; >Next</span>
<b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b>
</span></pre>

Thomas1966
03.08.2012, 09:52
Hallo Jürgen,

nochmals vielen Dank-jetzt funktioniert alles wunderbar!! Deine Unterstützung war echt hilfreich und erleichtert mir so manches im Arbeitsalltag. Werd jetzt das WE über alles in meine Tabellen einarbeiten und ausgiebig testen-und wenn alles klappt (wovon ich ausgehe) mich den nächsten Problemen widmen.
Nochmals Danke und ein schönes Wochenende!!
lg Thomas