Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Text in Spalten auswerten
Moritz
Hallo,
ich habe eine Textdatei, die ich in Excel kopiere und dort in 3 Spalten aufteile. Die einzelnen Seiten sind nach Gebiet dann Produktart und dann Produkt aufgebaut.
Beispiel
Gebiet 1
Produktart 1
Produkt 1
Produkt 2
Produktart 1 Summe
Produktart 2
Produkt 1
Produkt 2
Produkt 3
Produktart 2 Summe
usw...
Gebiet 2
usw...
Mein Ziel ist es, diese Spalten nach folgendem Schema auszuwerten
Gebiet 1 Summe Produktart 1 Summe Produktart 2 usw.
Gebiet 2 Summe Produktart 1 Summe Produktart 2 usw.
Ich habe mal angefangen mit ein kleinen Code.
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
j = 0
For i = 1 To Worksheets("Input").Cells(Rows.Count, "A").End(xlUp).Row
If 'Hat jemand hier eine Idee, wie ich das Gebiet einbinde?
If Worksheets("Input").Cells(i, 1) = "Produktart 1" And (Worksheets("Input").Cells(i, 3)  0) Then 'Die Zelle bei der größer oder kleiner 0 geprüft  _
wird, ist die Zelle mit der Summe
Worksheets("Input").Cells(1, 5) = Worksheets("Input").Cells(i, 3)
'Hier fehlt der Übergang, da weiß ich nicht, wie ich das mache
If Worksheets("Input").Cells(i, 1) = "Produktart 2" And (Worksheets("Input").Cells(i, 3) _
_
 0) Then 'Die Zelle bei der größer oder kleiner 0  _
geprüft wird, ist die Zelle mit der Summe
Worksheets("Input").Cells(1, 6) = Worksheets("Input").Cells(i, 3)
End If
Else
End If
Next j
End If
Next i
End Sub
Kann mir vielleicht jemand weiterhelfen?
Viele Grüße
Moritz
Makro IF-Anweisungen verschachteln
04.08.2009 22:57:14
Moritz
Hallo,
hat noch keiner eine Idee, wie ich die Sache mit einem Makro umsetzen könnte?
Viele Grüße
Moriz
AW: Makro IF-Anweisungen verschachteln
04.08.2009 23:25:39
Jens
Hallo Moritz
die ich in Excel kopiere und dort in 3 Spalten aufteile
Kannst Du bitte mal so eine Beispiel-Datei hochladen?
Am besten 1 Blatt "vorher" und 1 Blatt wie es nachher aussehen soll.
Gruß aus dem Sauerland
Jens
AW: Makro IF-Anweisungen verschachteln
05.08.2009 08:39:02
Moritz
Hallo Jens,
hier habe ich mal eine Beispieldatei hochgeladen:

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


Ich habe mal nur 2 Gebiete und 3 Produktarten verwendet. In der Regel sind das bis zu 10 Gebiete und 50 Produktarten. Im endefekt sind nur die Summen wichtig.
Viele Grüße
Moritz
Danke für die Hilfe schon mal!
Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 09:24:37
David
Hallo Moritz,
ich nehme mal an "Gebiet 1" ist nur ein Platzhalter und deine Echt-daten haben "richtige" Namen, oder?
Kannst du in dem Fall mal ein oder zwei Beispiele nennen?
Man braucht ein eindeutiges Merkmal, um die Zelle mit dem Gebiet zu identifizieren. Alternativ, wenn die Struktur IMMER gleich ist, könnte man das Feld "Titel" heranziehen und zwei Zeilen darunter das Gebiet auslesen.
Das könnte man auch per Formel lösen, ohne VBA.
Gruß
David
AW: Makro IF-Anweisungen verschachteln
05.08.2009 10:12:29
Moritz
Hallo David,
ja bei "Gebiet 1" stehen fix Namen. Es sind im Endefekt immer die selben Gebiete, die in der Regel mit der entsprechenden Person in der Zelle stehen. z.B. Herr Mustermann Hessen.
Meine Idee war schon, die Zellen nach Herr bzw. Frau zu durchsuchen und sobald Excel etwas gefunden hat, diesen Zelleninhalt zu übernehmen und die Zahlen der einzelen Produkarten solange in eine Zeile zu schreiben bis ein neuer Namen auftaucht also Gebiet 2. Das wäre eine Option.
Andere Möglichkeit wäre, dass man vor die Gebiete einmal alle im Code hinterlegt und diese nacheinander angearbeitet werden oder
man kann die Gebiete beim Start des Makros jeweils manuell eingeben. Das wäre natürlich optimal, wenn man nur ein bestimmtes Gebiet braucht.
Mit einer einfach Formel könnte es etwas schwierig sein, da durch das Aufteilen in Spalten vom ursprünglichen Text, sind die Gebietsnamen teilweise abgeschnitten. Aber die Namen sind trotzdem eindeutig zu erkennen auch in "Kurzform".
Hilft das weiter David?
Viele Grüße
Moritz
Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 10:29:06
David
Hallo Moritz,
als Formellösung (auf deine Beispieltabelle bezogen):
Tabelle1
 ABCDEF
1HilfsspalteHilfsspalte  Produktart 1Produktart 2Produktart 3
2337Gebiet 1105516
34016Gebiet 26380
4#ZAHL!#ZAHL!#ZAHL!#ZAHL!#ZAHL!#ZAHL!
5           
6(ausblenden?)(ausblenden?)       

verwendete Formeln
Zelle Formel
A2 {=KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A1))}
B2 {=-KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A1))+KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A1)+1)}
C2 =INDEX(Sheet1!$A$1 :$A$100;A2)
D2 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A2-1;;$B2)=D$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A2-1;2;$B2)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A2-1;2;$B2))
E2 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;;$B$2)=E$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;2;$B$2)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;2;$B$2))
F2 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;;$B$2)=F$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;2;$B$2)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A$2-1;2;$B$2))
A3 {=KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A2))}
B3 {=-KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A2))+WENN(ISTFEHLER(KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A2)+1));ANZAHL2(Sheet1!A1 :A56)+ANZAHLLEEREZELLEN(Sheet1!A1 :A56);KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A2)+1))}
C3 =INDEX(Sheet1!$A$1 :$A$100;A3)
D3 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;;$B3)=D$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3))
E3 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;;$B3)=E$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3))
F3 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;;$B3)=F$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A3-1;2;$B3))
A4 {=KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A3))}
B4 {=-KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A3))+KKLEINSTE(WENN(ISTFEHLER(VERGLEICH(Sheet1!$A$1 :$A$42;Tabelle1!$I$1 :$I$2;0));"";ZEILE(Sheet1!$A$1 :$A$42));ZEILE(A3)+1)}
C4 =INDEX(Sheet1!$A$1 :$A$100;A4)
D4 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;;$B4)=D$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4))
E4 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;;$B4)=E$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4))
F4 =SUMMENPRODUKT(--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;;$B4)=F$1);--(BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4)<>"");BEREICH.VERSCHIEBEN(Sheet1!$A$1;$A4-1;2;$B4))
{} Matrixformel mit Strg+Umschalt+Enter abschließen

Tabellendarstellung in Foren Version 4.3


Alle Formeln in Zeile 2 können einfach runterkopiert werden.
Dazu gehört noch eine Liste der vorkommenden Gebiete, diese muss manuell eingegeben werden:
Tabelle1
 I
1Gebiet 1
2Gebiet 2

Tabellendarstellung in Foren Version 4.3


Die Schreibweise in dieser Liste muss EXAKT der Schreibweise in der Tabelle entsprechen. Du kannst diese Hilfsliste ggf. auch auf ein anderes Blatt auslagern oder die Spalte ausblenden.
Der Fehlerwert #ZAHL kommt dann, wenn es keine weiteren Gebiete mehr gibt, ich habe das absichtlich nicht abgefangen, da diese die Formel ziemlich aufblähen würde (=Wenn(Istfehler(...)...)).
Die beiden Hilfsspalten F und G sind leider auch notwendig, da sich diese Matrixformeln nicht in die anderen integrieren lassen, diese kannst du ja auch ausblenden.
Die Bereiche musst du natürlich auch noch auf deine Echtdaten anpassen. Bei großen Tabellen wird diese Lösung allerdings schnell an ihre Grenzen stoßen, da Matrixformeln tendenziell dann langsamer werden.
Hier mal noch meine Testdatei:
https://www.herber.de/bbs/user/63626.xls
Schau mal, ob dir das weiterhilft.
Für eine VBA-Lösung reichen meine Kenntnisse leider nicht, bzw. habe ich nicht die Zeit dafür, dann stelle die Frage wieder auf offen und lass die anderen Experten ran.
Gruß
David
Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 13:28:18
Moritz
Hey David,
danke für die Unterstützung, aber mit den Formeln wird das leider nicht so einfach klappen.
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
05.08.2009 15:05:33
David
Hallo Moritz,
wäre trotzdem schön gewesen zu wissen, warum.
Gruß
David
AW: Makro IF-Anweisungen verschachteln
05.08.2009 16:27:28
Moritz
Hey David,
ich versuche Dein System noch mal umzusetzen. Die Daten überstrecken sichen über 2.500 bis 4.000 Zeilen. Meinst Du, dass das die Matrix Formeln mit machen?
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
05.08.2009 16:49:33
Moritz
Hallo David,
aus welchen Gründen sind die Zellen B2 und B3 unterschiedlich? Du schriebst, dass die Formeln sonst ab Zeile 2 in Excel runtergezogen werden können.
Viele Grüße
Moritz
Anzeige
AW: Makro IF-Anweisungen verschachteln
06.08.2009 08:24:03
David
Hallo Moritz,
in B3 war zunächst noch ein Fehlerwert aufgetaucht, den ich mit einer Anpassung vermieden hatte. In dem Fall musst du diese Formel erst nach B2 kopieren bzw. nach unten. Hatte ich versäumt zu machen, bevor ich den Beitrag hier geschrieben habe.
Gruß
David
AW: Makro IF-Anweisungen verschachteln
05.08.2009 09:21:41
Dirk
Hallo Moritz,
anbei mal eine Tabelle mit Makro, welche ungefaehr Deine Problemstellung beinhaltet und loest.
Du must die Makros aus Tabellenblatt 'Uebersicht2' nehmen, da dieses Makro fehlertolleranter ist.
Das Macro musst Du entsprechend anpassen, damit die Spalten und Zeilen stimmen.
https://www.herber.de/bbs/user/63624.xls
Falls Du noch Hilfe brauchst einfach nochmal posten.
Lass von Dir hoeren, ob ok.
Gruss
Dirk aus Dubai
Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 13:48:17
Moritz
Hallo Dirk,
ich habe mir mal Deine Datei angeschaut. Der Code passt gut, er muss nur abgeändert werden. Im Moment scheitere ich noch etwas.
Mein Problem ist, dass die Zelle, die die erste Schleife sucht, auf jeder Seite neu vorkommt, bis das nächste Gebiet kommt.
Kann mich da vielleicht noch jemand unterstützen?
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
05.08.2009 18:55:20
Dirk
Hallo Moritz,
anbei mal eine Tabelle mit angepasstem Macro. Dieses sucht in spalte A immer in dem Bereich eines Gebietes und schreibt die gefundenen Werte in Tabelle 1. Dabei ist egal wie lang der jeweilige Bereich ist.
https://www.herber.de/bbs/user/63643.xls
Ich hoffe das hilft Dir weiter. Lass' hoeren ob ok.
Gruss
Dirk aus Dubai
Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 19:08:21
Dirk
Hallo nochmal,
hier noch eine kleine Anpassung des Macros. Damit wird die Tabelle1 komplett befuellt, man muss dann nur noch die Summenformeln einbringen (habe jetzt leider Kinderaufsicht, da geht das nicht mehr :-)
Gruss
Dirk aus Dubai
Sub get_data2()
'Dieses Macro versorgt Tabelle Uebersicht2 mit den Daten aus den Monatstabellen
Dim SearchStr As String, lCount As Long, rFoundCell As Range, rFoundCell2 As Range, WSh As  _
Worksheet
Dim N As Long, k As Long, UGruppeAddr As String, M_Uebertrag As Integer, FirstAddress As String
Dim SecondAddress As String, zz As Long, M As Long, SearchStr2 As String, UGruppeAddr2 As  _
String, z As Long, LastRow As Long
Dim FirstSearch As Long, tmp As String, Regions As Integer, MyRange As String, rFoundCellNext  _
As Range
Application.EnableEvents = False
'firt get rid of additional spaces
Call LeerzeichenEntfernen("Sheet1")
'On Error GoTo error
Regions = WorksheetFunction.CountIf(ThisWorkbook.Sheets("Sheet1").Columns(1), "Gebiet*")
For N = 1 To Regions
'Tabellenname festlegen
Set WSh = ThisWorkbook.Sheets("Sheet1")
'Festlegen des Suchkriterium, variable Struktur in Tabelle1
SearchStr = "Gebiet " & N
SearchStr2 = "Gebiet " & N + 1
UGruppeAddr = ""
M_Uebertrag = 1
With WSh.Columns(1)
Set rFoundCell = .Find(SearchStr, lookat:=xlWhole, LookIn:=xlValues)
If Not rFoundCell Is Nothing Then
FirstAddress = rFoundCell.Address
Sheets("Tabelle1").Cells(1 + N, 1).Value = rFoundCell
Set rFoundCellNext = .Find(SearchStr2, lookat:=xlWhole, LookIn:=xlValues)
If Not rFoundCellNext Is Nothing Then
lastaddress = rFoundCellNext.Address
Else
lastaddress = "A" & LastRow
End If
SucheNext:
'naechste Schleife bestimmt das 2te Suchkriterium (Untergruppe)
zz = 0
For M = M_Uebertrag To 4 '(3 Produktgruppen in Tabelle "Sheet1")
'suche nach unten in der Tabelle nach dem Wert aus Tabelle sheet1
SearchStr2 = "Produktart " & M 'Untergruppe
UGruppeAddr = Cells(1 + N, 1 + M).Address
If Not zz  0 Then
LastRow = ThisWorkbook.Sheets("Sheet1").Cells.Find(What:="*", After:= _
[A1], SearchDirection:=xlPrevious).Row
MyRange = Range(FirstAddress & ":" & lastaddress).Address
With WSh.Range(MyRange)
Set rFoundCell2 = .Find(SearchStr2, lookat:=xlWhole, LookIn:= _
xlValues)
retry:                          If Not rFoundCell2 Is Nothing Then
SecondAddress = rFoundCell2.Address
If WSh.Cells(rFoundCell2.Row, 3).Value  "" Then 'check on  _
Value
If WSh.Cells(rFoundCell2.Row, 1).Value = SearchStr2  _
Then
UGruppeAddr2 = Cells(rFoundCell2.Row, 3).Address
'wenn Untergruppe gefunden wurde, Wert aus Spalte 5  _
in Tabelle 'Übersicht2' uebernehmen
Sheets("Tabelle1").Cells(1, 1 + M).Value =  _
SearchStr2
Sheets("Tabelle1").Range(UGruppeAddr).Value = WSh. _
Range(UGruppeAddr2).Value
Sheets("Tabelle1").Range(UGruppeAddr).Interior. _
ColorIndex = 3 + N
zz = 0
FirstSearch = 0
UGruppeAddr = ""
UGruppeAddr2 = ""
GoTo Next_M
End If
zz = zz + 1
End If
Set rFoundCell2 = .FindNext(rFoundCell2)
If Not rFoundCell2.Row > Range(lastaddress).Row Then
GoTo retry
End If
Else
'no entry was found, fill cell with remark
Sheets("Tabelle1").Cells(1, 1 + M).Value = SearchStr2
Sheets("Tabelle1").Range(UGruppeAddr).Value = "no entry"
Sheets("Tabelle1").Range(UGruppeAddr).Interior.Color = RGB( _
220, 120, 0)
FirstSearch = 0
GoTo Next_M
End If
LastRow = rFoundCell.Row + z
End With
End If
Next_M:
Next M
Else
tmp = MsgBox("Die Hauptgruppe '" & SearchStr & "' aus Tabelle Sheet1 existiert  _
nicht in der Monatstabelle '" & WSh.Name & "' !" _
& vbCrLf & "Bitte überprüfen Sie die Schreibweise in Tabelle 'Sheet1'",  _
vbCritical, _
"Kritischer Fehler")
If tmp = vbOK Or tmp = "" Then
Exit Sub
End If
End If
End With
Next N
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
error:
MsgBox "There was an error"
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Makro IF-Anweisungen verschachteln
05.08.2009 21:39:36
Moritz
Hey Dirk,
hast Du die Kinder gut versorgt =)? Dein Code ist klasse. Kannst Du mir verraten, was Du zum letzten Code noch verändert hast? Wie muss man den Code verändern, wenn die einzelnen Produkarten sich nicht einfach durch eine Nummer unterscheiden sondern komplett aus Verschiedenen Namen bestehen? Bei den Gebieten sieht es ähnlich aus =). Wenn ich feste Gebiete habe, kann ich diese dann nicht direkt in den Code reinschreiben, damit der Code mit Hilfe der Variablen nach der entsprechenden Zeile bzw. Spalte sucht?
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
06.08.2009 09:19:25
Dirk
Hallo Moritz,
um das zu erreichen und ohne zu wisen, wie die Gebiete oder Produktgruppen benannt sind, waere es am Einfachsten, wenn Du fuer die Gebiete und Produktgruppen jeweils eine Liste erzeugst, in welcher dann einer nach dem anderen gesucht wird. Da kannst Du dann das erste Beispiel hernehmen: dort wird nach den zwei Suchkriterien in dem Resultatsblatt gesucht und die gefundenen Werte aus den Monatstabellen eingefuegt.
Vieleich postest Du mal ein close-to-life Beispiel damit man da weitermachen kann?
Gruss
Dirk aus Dubai
Anzeige
AW: Makro IF-Anweisungen verschachteln
06.08.2009 12:19:31
Moritz
Hallo Dirk,
ich kann Dir folgende Beispieldaten geben, die der Wirklichkeit sehr stark ähneln. Die Gebiete sind nach Personen aufgeteilt. Und durch das Aufteilen in Spalten werden die Namen zum Teil aufgeteilt. Das ergibt für die Gebiete z.B. folgende Möglichkeiten
Herr Bau
Herr Pet
Frau Mat
Herr Kut
Diese Liste geht natürlich noch weiter.
Bei den Produkarten handelt es sich um Sektoren, die wie folgt aussehen:
Aktien
Renten
Aktienfo
Die Abkürzung liegt auch am Aufteilen, weil wenn ich die Spalten zu groß mache, kommen zusätzlich irgendwelche Variablen dazu, die vermutlich schwerer zu identifizieren sind.
Reicht Dir das als Info?
Viele Grüße und vielen Dank!
Moritz
Anzeige
AW: Makro IF-Anweisungen verschachteln
06.08.2009 21:15:35
Dirk
Hallo Moritz,
habe das mal so angepasst. In dem Tabellenblatt Vertriebsdaten musst Du die Regionen unter Gebietsliste eintragen und unter Produktgruppen Deine Produktgruppen (damit kannst Du auch filtern, falls etwas nicht benoetigt wird. Dazu einfach den nicht benoetigten Eintrag aus diesen Listen loeschen; das macro springt dann zum naechsten eintrag).
Falls Dein Sheet1 in einer anderen Spalte als "A" durchsucht werden muss musst Du das ggf. anpassen.
Ansonsten sollte es funktionieren. Lass hoeren, ob ok.
Gruss
Dirk aus Dubai
https://www.herber.de/bbs/user/63676.xls
AW: Makro IF-Anweisungen verschachteln
07.08.2009 08:50:53
Moritz
Morgen Dirk,
die Excel-Datei hat super geklappt. Dann habe ich nur die Zellen etwas verändert und jetzt kommt ein Fehler 400. Woran liegt das =)?
https://www.herber.de/bbs/user/63680.xls
Hier ist meine geänderte Datei mit dem Fehler.
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
07.08.2009 12:34:05
Dirk
Hallo Morits,
hatte da beim umstellen des Macro eine Zeile vergessen. Lastrow war nicht definiert, daher der Fehler.
Hier die geaenderte Datei. Sollte jetzt gehen.
Gruss
Dirk aus Dubai
https://www.herber.de/bbs/user/63687.xls
AW: Makro IF-Anweisungen verschachteln
07.08.2009 13:59:26
Moritz
Hallo Dirk,
jetzt funktioniert es super! Mir ist nur aufgefallen, dass ich das Makro nur im Tabellenblatt "Tabelle1" ausführen kann. In "Sheet1" und "Vertriebsdaten" kommt weiterhin der Fehler 400. Ich werde den Code mal ausgiebig testen und Dir dann noch mal bescheid geben.
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
07.08.2009 14:12:37
Moritz
Hallo Dirk,
mir ist noch ein Spezialfall aufgefallen. Ich habe 4 Produkte, bei denen steht in Spalte 1 "Struktur" um diese Produktart genau identifizieren zu können, steht in Spalte 2 noch "mit Aktien", "mit Renten", "mit Währ" also direkt daneben jeweils in selben Zeile.
Ist es möglich im Tabellenblatt "Vertriebsdaten" in Spalte D die zusätzliche Info noch einzutragen und eine zusätzliche Abfrage einzuarbeiten. Wenn dann in Spalte D in "Vertriebsdaten" nichts steht soll die Schleife einfach weitergehen und wenn in Spalte D etwas steht, sollen bei den Daten die zweite Spalte "Sheet1" übprüft werden.
Ich hoffe, Du verstehst was ich meine =).
Vielen Dank und viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
07.08.2009 20:47:26
Dirk
Hallo Moritz,
das Macro ist dafuer gedacht, die Auswertung in Tabelle1 zu schreiben, daher ist es dort plaziert. Die Daten, welche ausgewertet werden sollen, befinden sich in der Tabelle Vertriebsdaten (oder wie auch immer Du die nennen willst) fuer die Abfragewerte 'Region' und 'Produktgruppen' und in sheet1 fuer die Rohdaten, welche durchsucht werden sollen. Deine Rohdaten solltest Du immer in Sheet1 kopieren.
Falls noch nach weiteren kriterien unterschieden werden soll, muss dazu noch eine Schleife eingebaut werden. Ist normalerweise kein Problem.
Was soll denn mit dem gefundenen Werten gemacht werden, wenn Spalte D als Kriterium verwendet wird un Spalte B in Sheet1 ausgewertet wird? Welchen Eintrag brauchst Du wo in blatt Tabelle1?
Gruss
Dirk aus Dubai
AW: Makro IF-Anweisungen verschachteln
10.08.2009 08:48:27
Moritz
Hallo Dirk,
ich brauche den zusätzlichen Wert nur zur Unterscheidung. Sonst bleibt alles wie vorher. Da in Sheet 1 es mehrere Produktarten gibt, bei denen nur Struktur in der 1. Spalte stehen und in der zweiten Spalte noch eine genauere Bezeichnung. Müsste der Code nur beide Zeilen abgleichen und dann entsprechend die Zahl aus Spalte 3 nehmen.
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
10.08.2009 15:21:59
Dirk
Hallo Moritz,
z.B. so:
If wert1 = "struktur" and range(wert1.address).offset(0,1).value "" then
foundvalue= range(wert1.address).offset(0,3).value 'offset auf die Zelle in der der Wert steht
end if
Ich kann Dir das Macro erst naechste Woche anpassen, wenn gewuenscht.
Gruss
Dirk aus Dubai
AW: Makro IF-Anweisungen verschachteln
14.08.2009 09:43:31
Moritz
Hallo Dirk,
das wäre klasse, wenn Du das Macro nächste Woche noch anpassen könntest.
Viele Grüße
Moritz
AW: Makro IF-Anweisungen verschachteln
14.08.2009 17:36:31
Moritz
Hallo Dirk,
im Moment sucht das Makro nach den Produktarten und wenn in der 3. Spalten ein Wert drin steht (die Summe), wird dieser Wert genommen. Es kommt teilweise vor, dass aus irgendwelchen Gründen mal kein Wert in der Spalte steht. Die Produktart ist dann aber trotzdem abgeschlossen und es kann zur nächsten Produktart weitergegangen werden. Das Makro läuft nur unendlich, wenn es keinen Wert gefunden hat.
Man könnte ja eine Abfrage machen, bei der das Makro die Tabelle bis nach unten durchsucht. Wenn für die Produkart bis zum Ende der Tabelle kein Wert gefunden wurde, soll einfach 0 bzw. no entry eingetragen werden. Geht das?
Viele Dank und viele Grüße
Moritz

389 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige