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.

Blatt-Name verwenden um Daten anzuzeigen
#11
Hallo,
Zitat:Wie ist es wenn nur der Anfang der Tabellenbläter TN_Adr_ und egal was danach kommt er die Kundennummer finden soll. 

 
Dann musst du eine VBA Lösung erstellen, in der in einer Schleife alle Blätter durchsucht werden.

Oder die PowerQuery Lösung von PIVQ, mit der du die 80 Blätter/Einzeltabellen erstmal zusammenführen musst.
Cadmus
Antworten Top
#12
Vielen DANK lieber PivPQ,


magst mir mal auf die Sprünge helfen?

Da dies eine Beispieldatei ist,  was kopiere ich in die echte Datei?

Wo finde ich was du gemacht hast?  Smile  


Das ist wahrscheinlich auch hilfreich für die Ids.  Alle Ids_   in die Ids_Gesamt kopieren.   
Das ist wie ich es sehe auch so angelegt.
Habe ein Register mit 10090 dazu, aktualisieren macht er nicht.

Fehlermeldung: Initialisierung der Datenquelle schlug fehl.  Findet die DB nicht.  

Vielen DANK.

LIEBE
Claudia

Lieber Fennek,
Excel 2010,
LIEBE
Claudia
Antworten Top
#13
Hallo

Ich habe erst jetzt gerade gesehen das du Excel 2007 angegeben hast. Stimmt das, oder ist dein Excel neuer??
Oder hast du ein Mac?
Falls das es stimmt wird meine PQ Version nicht bei dir laufen, deshalb auch die Fehlermeldung.

Hallo

Was du machen musst:

Schritt 1: Befülle die Tabellen mit deinen Originaldaten:

TN_Name Spalte A von ab Zeile 5 bis Spalte G nach unten.
TN_Adr_10040 Spalte A von ab Zeile 6 bis Spalte M nach unten
TN_Adr_10070 Spalte A von ab Zeile 6 bis Spalte M nach unten
TN_Adr_10080 Spalte A von ab Zeile 6 bis Spalte M nach unten
ids_10040 Spalte A von ab Zeile 6 bis Spalte D nach unten
ids_10070 Spalte A von ab Zeile 6 bis Spalte D nach unten
ids_10080 Spalte A von ab Zeile 6 bis Spalte D nach unten

Schritt 2

Rechtsklick in Tabelle TN_Name in Zelle I 4 und auf Aktualisieren klicken.
Rechtsklick in Tabelle  IDS_Gesamt in Zelle A 4 und auf Aktualisieren klicken.

Mehr ist nicht zu tun.
Die einzelnen Schritte was ich gemacht habe kannst du alle im PQ Editor auf der rechten Seite und im erweiterten PQ Editor nachlesen.
Hoffe es ist halbwegs verständlich.
Viele Grüße
PIVPQ
Antworten Top
#14
Vielen DANK lieber PIVPQ, 

Ex 2010, hab Power Quiry jetzt installiert.  
Das ist ja genial.  Wie eine DB Anwendung.   


Fehlermeldung ist weg.


Es geht hier nicht darum die bestehenden Blätter manuell aufzufüllen, sondern das soll Excel machen.


Wo es manuell geht, wo Daten zur Verfügung stehen ist in TN_Name, 
Das geht:   "diese Tabelle befüllen von A 5 bis G, anschließend rechtsklick in Zelle I 4 und Aktualisieren."

Die Daten die für aktualisieren verwendet werden, sind allerdings in  ca. 80 Registerkarten mit den Namen: TN_Adr_   dann die KdNr.
Diese Blätter kommen dann natürlich noch dazu.

Können diese Blätter bei der PowerQuery einfach angefügt werden oder  ist dann jeweils von neuem zu beginnen?


Es geht darum aus den TN_Adr_   Blättern die Daten in TN_Namen zu kopieren.  Alle KdNr. sind in TN_Name zur Verfügung. Danach kann in sämtlichen TN_Adr. gesucht werden und die restlichen Daten ab Spalte I eingefügt werden.  Das soll durch aktualisieren geschehen, so hab ich das verstanden. 




Für Ids_Gesamt   auch  so:    es gibt viele Registerkarten mit Namen Ids_  Kdnr.,   Letztendlich geht es darum was in Blättern die mit Ids_   beginnen in die Ids_Gesamt zu kopieren. 


Die Ids_10090  wurde hinzugefügt, aktualisieren.  Hat er nicht erkannt.  Ist dieses Blatt bei der Query hinzuzufügen  oder ist es so gemacht, dass alle Ids_    gefunden werden?



Vielen DANK.

LIEBE
Claudia
LIEBE
Claudia
Antworten Top
#15
Hallo

@Fennek   schöner Code, klein aber fein, von einem Fachmann. Ich habe mir erlaubt ihn um eine Spalte zu verlaengern (Ansprechpartner Dietmar fehlte) und für die zweite Aufgabe zı kopieren und umszuscheeiben. Für die Ids gesamt Auflistung. Beide Makros funktionieren bei mir einwandfrei. Schöne Arbeit, hat mir gefallen und ich habe bei Split was dazu gelernt. Das abschneiden mit (2) kannte ich noch micht! Gibt es da noch mehr Tricks??

mfg Gast 123


Angehängte Dateien
.xlsm   TN F-1.xlsm (Größe: 65,34 KB / Downloads: 2)
Antworten Top
#16
Lieber Gast 123,
wow das funktioniert.   Heart Heart

Ich habe 10090 ergänzt,

Sowohl Adressen als auch die Ids wurden ergänzt, auch Ansprechpartner/in Helma (bei 10090)


Magst du mir mitteilen,  wie du was erstellst hast?

Und wie ich das in die Originaldatei bringen kann. 


HERZlichen DANK


Angehängte Dateien
.xlsm   TN F-1.xlsm (Größe: 71,34 KB / Downloads: 2)
LIEBE
Claudia
Antworten Top
#17
Hallo Claudia

freut mich das dir unsere gemeinsame Forum Arbeit gefaellt.  Erinnere höflich daran dass der Original Code von Fennek stammt.
Ich habe mir nur erlaubt ihn zu erweitern und für die Ids Auswertung ein zweites Makro zu schreiben. Wie kommt der Code in deine Datei??

Du musst die Datei nach dem Einfügen der Module als xlsm Datei speichern!!  Dabei bleibt dir das Original als xlsx erhalten. Die solltest du zur Sicherheit auch bitte nicht löschen  Am einfachsten startest du den Makrorecorder zum aufzeichnen und gibt in eine Zelle irgendwas ein. Egal was. Dann hast du schon ein neues Modulblatt im VBA Editor. Den kannst du öffen indem du auf den Makro Dialog gehst, und das neue Makro zum Bearbeiten anklickst. 

Dann kopierst du beide Button im Beispiel, fügst sie mit Contrl V in deine Datei ein, und weisst ihnen mit der rechten Maustaste das Makro der Originaldatei zu.  Die Makro Endung "TN" oder "Ids" sagt dir wofür dieses Makro bestimmt ist.  Das ist alles. Ich bin gespannt wie es im Original funktioniert? 

Anbei noch mal der kommentierte Code zum kopieren und VBA lernen. Man braucht aber schon gutes VBA Wissen um ihn  zu verstehen.

 mfg Gast 123

Code:
'Original Code von Fennek  -  ergaenzt von Gast 123

Sub F_en_TN()
Dim Sht As Worksheet
Dim RNG As Range
Dim ZL As Range, f As Long
Dim TN As Worksheet
Set TN = Sheets("TN_Name")

On Error Resume Next
For Each Sht In Sheets
    'Prüfe den Tabellen Namen auf "TN_Adr"
    If InStr(Sht.Name, "TN_Adr") > 0 Then
        kd = Split(Sht.Name, "_")(2) 'vorspann Text abschneiden
        Set RNG = Sht.Columns(1).Find(kd, , xlValues, xlWhole)
        If Not RNG Is Nothing Then
            'setze den Bereich von Spalte C bis Spalte M
            Set RNG = Sht.Range(RNG.Offset(, 3), RNG.Offset(, 12))
           
            'suche die Kunden Nr. in "TN:Name" Blatt
            Set ZL = TN.Columns(1).Find(kd, , xlValues, xlWhole)
            'wenn gefunden Daten in die passnde Zeile einfügen
            If Not ZL Is Nothing Then RNG.Copy ZL.Offset(, 8)
        End If
        'von mir eingefügter Code zur Fehlerprüfung
        '** (Resume Next zeigt keine Laufzeitfehler an!)
        If Err > 0 Then Err.Clear: f = f + 1
    End If
Next Sht
Set TN = Nothing
If f > 0 Then MsgBox f & " Fehler aufgeteten!"
End Sub


'kopierter Code von Fennek  -  zur Ids Auswertung

Sub F_en_Ids()
Dim Sht As Worksheet
Dim RNG As Range
Dim ZL As Range
Dim lz1 As Long, f As Long
Dim IDS As Worksheet
Set IDS = Sheets("Ids_Gesamt")

lz1 = IDS.Cells(Rows.Count, 1).End(xlUp).Row
IDS.Range("A6:D" & lz1 + 1).ClearContents

On Error Resume Next
For Each Sht In Sheets
    'Prüfe den Tabellen Namen auf "Ids_"
    If InStr(Sht.Name, "Ids_") > 0 Then
        kd = Split(Sht.Name, "_")(1) 'vorspann Text abschneiden
        Set RNG = Sht.Columns(1).Find("KdNr.", , xlValues, xlWhole)
        If Not RNG Is Nothing Then
            'setze den Bereich von Spalte A bis D mit LastZell !!
            lz1 = Sht.Cells(Rows.Count, 1).End(xlUp).Row
            Set RNG = Sht.Range(RNG.Offset(1, 0), RNG.Offset(lz1, 3))
           
            'kopiere Bereich und haenge ihn in "Ids gesamt" unten an
            RNG.Copy IDS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
        'von mir eingefügter Code zur Fehlerprüfung
        If Err > 0 Then Err.Clear: f = f + 1
    End If
Next Sht
Set IDS = Nothing
If f > 0 Then MsgBox f & " Fehler aufgeteten!"
End Sub

Nachtrag:  Makro recorder abschalten bitte nicht vergessen, und den Text "Makro1" löschst du einfach weg.
Antworten Top
#18
Lieber Gast 123,
ja für Fennek natürlich  auch ein HERZliches DANKe schön  Heart Heart
Bei EDV wirken mehrere.  Wie in der Natur, für einen Apfel Bedarf es Sonne, wie Wind, Wasser und anderes  Smile .  Jedes hat seine Qualität. 

Vielen DANK für die Erklärungen. Das werde ich sehen wie das im Original  geht. 


Zunächst teste ich noch in der Beispieldatei  TN-1.


Da ist folgendes aufgefallen:

1.   bzgl.  Ids: 
- die DS  erscheinen 2x, werden also in Ids_Gesamt  2x kopiert.     Sorry das habe ich jetzt erst gesehen. Vor lauter Euphorie  Smile 
Es sollte natürlich  eine Id und nur 1x darin erscheinen. 

-  gut ist, dass auch aus Registern mit Ids_99999  , das sind welche wo mehrere und somit unterschiedliche  KdNr. drin stehen, die Datensätze geholt werden. 

2. bzgl. Adr_TN:     wenn dies noch zusätzlich geht, wäre fein. 
wäre schön, wenn er aus den Registern Adr_TN_99999_*  (Stern für  z.B. 01, 02  oder den Anprechpartner: Detlev also z.B.  Adr_TN_99999_Detlev)   alle Datensätze kopiert
Das sind Register wo unterschiedliche KdNr. drin stehen, somit mehrere Datensätze



HERZlichen DANK.
Heart Heart
LIEBE
Claudia
Antworten Top
#19
Hallo Claudia

ich habe mir die Ids Daten mal nach KdNr. sortiert. Dabei fiel mir auf das es verschiedene Vertrags Nr. gibt und das Datum wann bezahlt wurde verschieden ist.  Der neue Code s.u. sortiert dir die Ids Daten nach Kunden Nr. und löscht alle Duplikate heraus. Ich hoffe das bringt dich weiter. Würde mich freuen wenn damit alles optimal laeuft.

mfg Gast 123 

Code:
Sub F_en_Ids()
Dim Sht As Worksheet
Dim RNG As Range
Dim ZL As Range
Dim lz1 As Long, f As Long
Dim IDS As Worksheet
Set IDS = Sheets("Ids_Gesamt")

lz1 = IDS.Cells(Rows.Count, 1).End(xlUp).Row
IDS.Range("A6:D" & lz1 + 1).ClearContents

On Error Resume Next
For Each Sht In Sheets
    'Prüfe den Tabellen Namen auf "Ids_"
    If InStr(Sht.Name, "Ids_") > 0 Then
        kd = Split(Sht.Name, "_")(1) 'vorspann Text abschneiden
        Set RNG = Sht.Columns(1).Find("KdNr.", , xlValues, xlWhole)
        If Not RNG Is Nothing Then
            'setze den Bereich von Spalte A bis D mit LastZell !!
            lz1 = Sht.Cells(Rows.Count, 1).End(xlUp).Row
            Set RNG = Sht.Range(RNG.Offset(1, 0), RNG.Offset(lz1, 3))
           
            'kopiere Bereich und haenge ihn in "Ids gesamt" unten an
            RNG.Copy IDS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
        'von mir eingefügter Code zur Fehlerprüfung
        If Err > 0 Then Err.Clear: f = f + 1
    End If
Next Sht

With IDS  'sortiert Spalte A, danach Spalte B
     lz1 = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range("A6:D" & lz1).Sort Key1:=.Range("A6"), Order1:=xlAscending, _
      Key2:=.Range("B6"), Order2:=xlAscending, Header:=xlNo, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     'doppelte Daten löschen
     .Range("A6:D" & lz1).RemoveDuplicates Columns:=4, Header:=xlNo
End With

Set IDS = Nothing
If f > 0 Then MsgBox f & " Fehler aufgeteten!"
End Sub
Antworten Top
#20
Lieber Gast123, 
HERZlichen DANK,   die Id ist jetzt eindeutig.

Was ggf. noch zu ermöglichen ist; 
Ids_10090  und Ids_99999_*   kopiert wird Ids Gesamt

TN_Adr_99999_*  in  TN_Name
(* für Name Ansprechpartner)


Es hängt die Datei an, das ist im Blatt:  Makro_Formeln_beheben nochmal beschrieben, was funktioniert und was sehr fein ist wenn das noch geht.

HERZlichen DANK.

LIEBE


Angehängte Dateien
.xlsm   TN F-1.xlsm (Größe: 90,34 KB / Downloads: 4)
LIEBE
Claudia
Antworten Top


Gehe zu:


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