Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[2010] Excel-Weltkarte mit Werten befüllen
#11
Tut mir leid, ich kann aktuell nicht auf alles eingehen, aber mal kurze genauere Infos (ich habe die Kommentare überflogen, also keine Sorge, ich schreibe das nicht zum Witz :P)

Aktueller Stand:
-Daten werden aus der Datenbank entnommen, vorab geplant für T-1 Monat (Heute -1 Monat)
-Datenmenge beträgt ca. 25.000 Zeilen und an die 250 Spalten, eine Umformatierung ist da nicht sehr lustig. 
-Daten werden per Aktualisierung und Datenbankzugriff aktualisiert
-Aktuell kann ich per Makro das Startland auswählen, der Filter wird automatisch gesetzt und wie im letzten Bild gezeigt rechts Rohdaten angezeigt (Startland und Kennziffern, wobei diese nur ein Prototyp zum Test sind, es werden bei weitem mehr sein)

Ziel:
-Das Zielland ist momentan mein Problem. Das Ausgangsland lasse ich bisher per Makro filtern, da es nur 6 unterschiedliche gibt habe ich manuell im Makro gesagt "Filtere auf US" [als Beispiel] bis alle durch sind. Beim Zielland ist das schwieriger, da nicht immer alle auftauchen, neue hinzukommen, etc. etc., also wäre mein Wunsch/Anliegen, dass ich PER MAKRO sagen kann: Gehe in den Filter "Zielland", nehme den obersten Wert im Filter und wähle nur diesen aus, zeige mir diesen Wert (<- Ziellandbezeichnung) bei der Ausgabe an, setze den Filter auf den 2. Wert bis alle durchgelaufen sind und ich für alle Zielländer einzelne Werte habe.
Antworten Top
#12
(28.03.2017, 06:32)M.Wichmann schrieb: Ich vermute jetzt mal mit der Ausgabe wirds schwierig.
Ich geh mal davon aus das es Länder mit sehr vielen Zielen gibt.


Die Tabelle im Anhang würde nicht reichen ? Zeigt alles wichtige und filtert.

Den Stand habe ich momentan, nur muss ich es irgendwie hinbekommen, dass das Makro beim Zielland automatisch durchfiltert, also von Position 1-X, ohne ihm zu sagen was er auswählen soll oder wie viele es gibt. Sinn dahinter ist, alle Sendungen aus dem Ausgangsland zu sehen und dahinter wohin sie gehen mit gegebener Menge.
Mein aktuelles Problem ist folgendes: 
-Die Zielländer nacheinander durchzufiltern, ohne ihm direkt den Namen des Filters zu sagen (Ist an erster Stelle DE muss ich ihm sagen "Filter auf DE", ich will aber, dass er das 1. nimmt, auch wenn da plötzlich vor DE ein CN kommt [Zielländer ändern sich häufig, da nur auf einen Monat geschaut wird).
-Bei der Ausgabe der Dateien festzustellen, welches Zielland momentan ausgewählt ist. Ich habe sehr viel in Google gesucht und oft gab es Möglichkeiten, bei dem Filter den 1. Wert auszugeben, doch ging das nur wenn die Formel selber in der selben Zeile war, was bei mir ja nicht der Fall sein wird (Tabelle 1 enthält Landkarte + Auswertung, Tabelle 2 enthält die Rohdaten). Habe es mit Teilergebnis probiert, doch konnte ich dort nichts findet was "Text" ausgibt, nur Zahlen. Somit ist meine Überlegung jedem Zielland eine Zahl zu geben, dieses dann umzuwandeln und die Zahl wieder zurückzuwandeln, sehr aufwendig, da wie gesagt Zielländer oft variieren und es 100e gibt.

Danach wäre der nächste Schritt alle Daten für die jeweiligen Zielländer auszugeben, das sollte aber dank Teilergebnis kein Problem sein...würde ich nur überhaupt dort ankommen...
Antworten Top
#13
Update:
Tut mir Leid für viel Text - will es nur sehr präzise erklären.

Ich habe allen Zielländern eine Nummer gegeben. Das wäre doch nicht so schwer zu pflegen, da ich bei "NULL" einfach nur das Zielland einfügen muss. Das sollte eigentlich nicht häufig passieren.
Momentaner Stand: Sobald wie Ausgangsland und Zielland gefiltert sind sucht er per SVerweis aus einer anderen Tabelle die Nummer gehörig zum Land heraus (für AE ist es 2), ich lasse mir das Teilergebnis in der obersten Zeile anzeigen, die wird ja auch beim Filtern nicht verändert. Danach verweise ich bei der Anzeige (Tabelle 1) auf dieses Feld und lasse mir wieder aus der Zahl das Land zurückgeben. Vielleicht umständlich, aber funktioniert. 

Bestehendes Problem: Den Filter vom Zielland "ShipToCustomerCountry" automatisch von 1-X durchlaufen zu lassen, anderes Problem könnte sein, dass er ja auch bei der Anzeige/Datenausgabe Tabelle1 für jedes Zielland eine neue Ausgabe anzeigen muss, also nicht einfach "schreibe in O2 X, O3 Y und O4 Z, sondern sobald das 2. Zielland kommt: In O2+4 X, in O3+4 Y....und beim 21. Zielland eben in O2+80, O3+80...


[img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Antworten Top
#14
Hallo,

irgendwie sehe ich O2 nicht Sad Wenn was "automatisch von 1-X durchlaufen" soll wird es wohl nicht ohne Makros gehen.
Ich bin da aber auch bei der Antwort von Edgar mit der Ausgabe in verschiedenen Tabellen, wobei bestimmt auch Pivot eine Möglichkeit wäre. Die Anzahl der Länder ist ja glücklicherweise endlich Smile

Alternativ könnte ich mir vorstellen, dass man "schreibe in O2 X, O3 Y und O4 Z" auch mit Formeln hinbekommt. Die Länder könnte man mit der Formellösung für den Spezialfilter ohne Duplikate herausfiltern und dann die zugehörigen Einträge mit INDEX und VERGLEICH oder wie auch immer. Auch wieder siehe Edgars Ansatz zumindest zum Verständnis von INDEX und VERGLEICH.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
(31.03.2017, 17:17)schauan schrieb: irgendwie sehe ich O2 nicht Sad  Wenn was "automatisch von 1-X durchlaufen" soll  wird es wohl nicht ohne Makros gehen.

Hallo,

ich lasse das momentan auch alles per Makro machen und ich habe auch alles soweit vorbereitet. Das Einzige, was mir momentan fehlt ist im Makro den Befehl zu geben, dass er jeden Wert durchlaufen soll - also nicht selber sagen "wähle Deutschland aus, dann mache X, wähle Euginea aus, dann mache X", sondern eben "gehe jeden Wert durch und mache bei jedem Wert X"
Antworten Top
#16
Hallöchen,

um erst mal eine unsortierte Liste ohne Duplikate zu bekommen, könntest Du eine Collection nehmen. Die funktioniert so. Schreibe zuerst mal in A1:A10 10 Einträge (Texte), dabei einige mehrfach. Am Ende beim Stop kannst Du Dir die Collection in der Überwachung anschauen. Im Prinzip müsste dort dann die Verarbeitung der Collection hin.
Der Key verhindert doppelte Einträge in der Collection.

Code:
Sub test()
'Variablendeclaration
'Integer, Collection
Dim iCnt%, colCountry As Collection
'Collection initialisieren
Set colCountry = New Collection
'Bei Fehler weiter
On Error Resume Next
'Schleife ueber 10 Zelleintraege
For iCnt = 1 To 10
  'Eintrag hinzufügen, und key
  colCountry.Add Cells(iCnt, 1), Cells(iCnt, 1)
'Ende Schleife ueber 10 Zelleintraege
Next
Stop
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
Hallo,

ich verstehe nicht ganz wie das das Problem lösen sollte - ich habe dann keine Duplikate mehr, dafür fallen eben genannte doppelte Werte heraus. Das will ich ja nicht. Ich will das Volumen für ein Zielland sehen und somit soll der Filter auf dem Zielland auf alle Werte einzeln filtern, dann wird zusammengezählt, abgespeichert und der nächste Wert kommt
Antworten Top
#18
Ich sage jetzt mal das Thema ist erledigt, gefunden was ich gesucht habe hatte ich leider nicht, hier aber mein Lösungsersatz:

Beim Einfügen/Aktualisieren neuer Daten wird automatisch eine Liste in einem neuen Blatt davon erstellt, gefiltert und jedes Land erhält einen Schlüssel (Zahl 1-X).
Der Schlüssel befindet sich auch in der Tabelle von den Original-Daten. Dieser Schlüssel wird zum Filtern verwendet.
Code:
Sheets("tabelle5").Select
   Columns("A:A").Select
   Selection.Copy
   Range("B1").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Columns("B:B").Select
   Application.CutCopyMode = False
   ActiveSheet.Range("$B$1:$B$19737").RemoveDuplicates Columns:=1, Header:= _
       xlNo
(per SVerweis werden die Zahlen in die Haupttabelle als Schlüssel eingefügt)

Ich nehme ein aktuelles Beispiel:
Es gibt 6 Herkunftsländer und 57 Zielländer. In der Karte klicke ich auf die AE (Arabische Emirate) und der Filter wird automatisch auf AE gestellt (AE wird blei Klick auf die Form in O2 geschrieben, folgendes ist ein seperates Makro).
Code:
Landname = Range("O2").Value
Sheets("Tabelle2").Select
   ActiveSheet.Range("$B:$B").AutoFilter Field:=2, Criteria1:=Landname
   Sheets("Tabelle1").Select

So weit waren wir, nun meine Ersatzlösung. 
Es gibt 2 Felder, einer überprüft den Min-Wert der Schlüssel, einer den Max-Wert.  Formel aus O1 wird als Wert in M1 geschrieben und als maxWert benutzt. Selber Text für minWert, nur in N1.
Code:
Sheets("Tabelle2").Select
   Dim maxLand As Integer
   Range("M1") = Range("O1").Value
   Range("M1").Select
   maxLand = ActiveCell
Einfach damit es schneller geht. 

AE hat 5 Zielländer, mit dem Schlüssel 2, 15, 31, 38, 51. Er läuft also von 2-51 alle Zahlen durch. Da er normal auch für nicht vorhandene Zahlen die Formeln schreiben würde (37 hätte dann eben 0 als Verweis) lasse ich vergleichen, ob O1 i entspricht; O1 ist das zuvor erwähnte maxLand. Da das Feld aktualisiert wird wird maxLand jedes mal 0 sein, sollte kein Land vorhanden sein. Zum Schluss schreibt er das Resultat in mein Haupt-Tabellenblatt. 
Ich habe nun in Zeile 3, 16, 32, 39, 52 Werte (+1 da Zeile 1 Titel ist) 
Code:
For i = minLand To maxLand
       Sheets("Tabelle2").Range("$A:$A").AutoFilter Field:=1, Criteria1:=i
       If Sheets("Tabelle2").Range("O1") = i Then
           Dim j As Integer
           j = i + 1
           Sheets("Tabelle1").Select
           Range("U1").Select
           Cells(j, 16).FormulaR1C1 = "=VLOOKUP(Tabelle2!R1C15,Tabelle4!C2:C3,2)"
           Cells(j, 16) = Cells(j, 16).Value
           Cells(j, 17).FormulaR1C1 = "=SUBTOTAL(102,Tabelle2!C[-11])"
           Cells(j, 17) = Cells(j, 17).Value
           Cells(j, 18).FormulaR1C1 = "=SUBTOTAL(109,Tabelle2!C[-12])"
           Cells(j, 18) = Cells(j, 18).Value
       End If
   Next i


Die sollen aber nicht so verteilt sein, also lasse ich alle leeren Zeilen löschen.

Code:
   Dim rng As Range
   Set rng = Range("P2:S100").SpecialCells(xlCellTypeBlanks)
   rng.Rows.Delete Shift:=xlShiftUp

Das sollte als Antwort genügen, sollte es jemand suchen. Es ist zwar noch weitaus mehr dahinter, aber das liegt eher daran, dass ich eine interaktive Karte verwenden will.
Antworten Top
#19
Hallo,

ich bin nach wie vor der Meinung das eine Pivotabelle reicht.... aber ohne eine Beispielmappe kann ich Dir die Möglichkeiten nicht aufzeigen!
Beispielmappe = deine Mappe ohne Personen und Firmenbezogene Daten (Zahlen einfach durch eine 1 ersetzen es geht ja nur um den Aufbau) als Excelmappe und nicht als BILD
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#20
Habe mal eine Mappe angehängt mit Beispielen.
Die Felder variieren, Gewicht interessiert ja normal nicht, aber bis ich genau weiß was gewollt wird will ich "Platzhalter", damit ich nur die Spalte ersetzen muss.
Wichtig ist, das alle Zahlen abrufbar bleiben, also die Anzahl2 und die Anzahl.

Gerne glaube ich, dass eine Pivot-Tabelle besser klappt, hatte wie gesagt vor dem Projekt 0 mit VBA und nur beschränkt mit Excel zu tun, habe also das genommen was für mich am Angenehmsten war.


Angehängte Dateien
.xls   BeispielMappe.xls (Größe: 1,12 MB / Downloads: 6)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste