Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auf Tabellen dynamisch zugreifen

Auf Tabellen dynamisch zugreifen
24.06.2008 19:29:36
Aron
HI
MY favorit Forum ;)
Hier nochmal ne komplexe frage an alle experts.
Schonmal Danke im voraus. Ich weiß eure Zeit die ihr hier rein steckt zu schätzen!
Ich würde j auch gern was machen, aber viel weiß ich nicht.
Beispiel:
Projektnummer P066_2007
erstellt am 12.3.2007
beendet 12.4.2007
Problem: Projekt könnte vom Kunden erst z.b. März 2008 bezahlt werden.
Also müsste die Projektdatei bzw. Projektnummer P066_2007 auf die Rechungsdateien von z.B. Rechnung_2007_3 ...bis... Rechnung_2008_3 (oder alle Rechnungen 07-08) alle nach der Projektnummer P066_2007 durchsuchen.
Meine Formel:
(powered by neopa)
=WENN($C38="";"";WENN(ISTZAHL(VERGLEICH("*"&WECHSELN($C38;"P";"");'[rechnung_2007_1.xlsx]Tabelle1'!$C$20:$C$31;))
;INDEX('[rechnung_2007_1.xlsx]Tabelle1'!$A$20:$J$31;VERGLEICH("*"&WECHSELN($C38;"P";"");
'[rechnung_2007_1.xlsx]Tabelle1'!$C$20:$C$31;);VERGLEICH(WECHSELN(J2;".";"")&"*";
'[rechnung_2007_1.xlsx]Tabelle1'!$A$3:$K$3;));"?"))
Gute wäre ja, wenn ich den Link [rechnung_2007_1.xlsx] dynamisch darstellen könnte oder immer wenn Projektnummer 2007(+1) also Rechnungsdateien 07-08 durchsucht.
Für spätere Jahre auch...
Rechnung_2007_1
Rechnung_2007_2
...bis...
Rechnung_2007_12
dann weiter mit
Rechnung_2008_1
etc.
Bitte Fragen, wenn etwas unklar ist.
Für mich ist es nicht leicht es zu erklären.
cya as

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
besser ist es, die Daten vorher ...
25.06.2008 08:40:00
neopa
Hallo Aron,
... in einer seperaten Tabelle z.B. Deiner Auswertungstabelle zu "sammeln". Denn auch wenn man mittels Einsatz von INDIREKT() die Auswertung "dynamisieren" könnte, bleiben Deine von Dir hier eingangs geschilderten Probleme (Du weißt ja gar nicht wann jeweils bezahlt wurde und somit in welcher Rechnungsdatei gesucht werden soll, d.h. Du müsstest eh immer in allen DATEIEN suchen).
Diese Sammeln köntest Du z.B. auch formeltechnisch mittels Verknüpfung auf die Datendateien eben mit INDIREKT() tun. Auf die so gesammelten Daten kannst Du dann Deine Auswertung wie bisher angegeben vornehmen.
Gruß Werner
.. , - ...

Anzeige
Leider
25.06.2008 10:50:04
Aron
Danke dir!
...leider hab ich es nicht geschafft das umzusetzen.
Ich habe mich über die Formel: INDIREKT() informieren müssen, da ich nicht wusste, wie man das einsetzt.
Wenn ich dich richtig verstanden habe, soll ich eine Sammel datei aus den Dateien z.b. Rechnung_2008_6 und folgende wenn sie dann erstellt werden(weiß nicht wie ich das eintrage...sind ja noch nicht vorhanden...)erstellen.
Ich habe auf der Seite gelesen,das "Indirekt kann nur mit geöffneten Mappen arbeiten!;Lassen Sie also die Finger davon, Indirekt für externe Bezüge einzusetzen!"
Stimmt das?
Wie kann ich dann von meiner Sammel datei dynamisch auf die Rechungsdateien zugreifen?
Insgesamt habe ich ja eine Projektdatei und eine Sammeldatei und mehrere Rechungsdateien...(manche ja noch nicht erstellt).
Danke für deine Hilfe.
Ich kenn mich leider nicht gut aus.
cya Aron

Anzeige
das ist richtig ...
25.06.2008 11:47:37
neopa
Hallo Aron,
... mit INDIREKT() lässt sich wirklich nur auf geöffnete Dateien zugreifen. Doch wenn Du die Daten formeltechnisch "dynamisch" sammeln willst, ist es zweckmäßig die Dateien alle wenigstens einmal geöffnet zu haben. Da ich davon ausgehe, dass die Daten in diesen Dateien unveränderlich abgeschlossen sind, brauchst DU INDIREKT() nur zum flexiblen Erstellen der Verknüpfung zu diesen Dateien in Deine "Sammeltabelle". Anschließend ersetzt Du die Formeln durch deren Ergebnisdaten und kannst dann die Dateien wieder schließen.
Gruß Werner
.. , - ...

AW: das ist richtig ...
25.06.2008 12:27:37
Aron
Danke für deine Antworten.
Hm bitte hilf mir nochmal die Formel von Indirekt zusammen zusetzen.
Ich weiß echt nicht wie das funktionieren soll.
Also Zelle z.b. A2=2008_6(gibt man dann ein um auszulesen?)
(name des Tabellenblattes der Datei Rechung_2008_6(muss ich dann das Tabellenblatt so nennen?))
INDIREKT(" ' " & A2 & " '[rechnungen_2008_6.xlsx]2008_6'!$20")
sieht falsch aus!
kein plan.
Formel der Sammeldatei die ich benutzte:
=WENN(ISTLEER('[rechnungen_2008_6.xlsx]Tabelle1'!$C32);"";'[rechnungen_2008_6.xlsx]Tabelle1'!$C32)
muss ich die Formel direkt mit der Wenn funktion verknüpfen?
Danke dir!
Aron

Anzeige
AW: das ist richtig ...
25.06.2008 14:52:00
Aron
Habe noch eine Seite zu diesem Thema gefunden(bitte beachte noch meine letzte Antwort.Danke.)
http://support.microsoft.com/default.aspx?scid=kb;de;506902
Die Formel funktioniert bei mir nicht.
Vielleicht muss ich da was ändern...
Sub Werte() Range("A1").Select Do ActiveCell.Offset(0,1).Formula = "=[" & ActiveCell.Value & "]Tabelle1!A1" ActiveCell.Offset(1,0).Select Loop until IsEmpty(ActiveCell.Value) End Sub


Danke an alle die mir helfen!
cya As

weiteres Material wie funzt für Spalte
25.06.2008 16:04:37
Aron
Die untere VBA version hab ich gefunden momentan werden alle befindlichen Datei im Ordner durchsucht.
Hier aber leider nur Cells(1,1) also nur eine Zelle der Dateien.
Wie kann ich also es auf eine ganze Spalte beziehen.
4 Spalten müsste ich aus den Vorhandenen Dateien ziehen, kann ich da ein fach den Code 4xkopieren?
Option Explicit

Sub Konsolidierung()
Dim MySheet As Worksheet ' aktuelles Arbeitsblatt
Dim strPath As String ' Dateipfad zum Auslesen der Dateien
Dim strFile As String ' Quelldatei
Dim wkbInput, meins As Workbook ' Quell-Arbeitsmappe
Dim wksInput As Worksheet ' Quell-Registerblatt
Dim lngTargetRow As Long ' Zeilenzähler für die Bewertungsinformationen
Dim lRow As Long ' Schleifenzähler
Dim lCol As Long ' Schleifenzähler
Dim delta As Integer
Application.DisplayAlerts = False
delta = 0
Set MySheet = ActiveSheet
Set meins = ActiveWorkbook
strPath = ActiveWorkbook.Path
' Verzeichnis durchgehen und alle Dateien auslesen
strFile = Dir(strPath & "\*.xlsx")
Do While strFile  "" ' Schleife beginnen
If strFile = ActiveWorkbook.Name Then
' Zieldatei natürlich übergehen
Else
' Quelldatei öffnen
' und 1. Registerblatt auswählen
Set wkbInput = Application.Workbooks.Open(strPath & "\" & strFile)
Set wksInput = wkbInput.Worksheets("Tabelle1")
' Daten auslesen und in Auswertung kopieren
wksInput.Activate
wksInput.Cells(1, 1).Select
Selection.Copy
meins.Activate
MySheet.Activate
MySheet.Cells(2 + delta, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
delta = delta + 1
' Datei schließen
wkbInput.Close
Set wkbInput = Nothing
End If
strFile = Dir ' Nächsten Eintrag abrufen
Loop
MsgBox "Ich habe Fertig!"
End Sub


Anzeige
oh, ...
25.06.2008 19:02:06
neopa
Hallo Aron,
... ich glaubte, Dir heute Nachmittag einen Formelvorschlag geschickt zu haben. Wie ich aber jetzt feststelle, war da nur der Wille gewesen.
Also für VBA fühle ich mich zuständig, obwohl das hier möglicherweise geeigneter ist als nachfolgender Vorschlag auf Formelbasis (und zwar nur als Anregung und Basis Deiner mir bisher bekannten Datenstrukturen)
Hilfsspalten in H und I. Formeln aus H2, I2 durch Ziehen nach unten kopieren. Ebenso die Hauptformel in A2, die jedoch auch nach rechts durch Ziehen kopiert werden kann.
 ABCDEFGHI
1Pr-NrDatumRechnungsnummerNettobetrag   20071
2P001_200801.05.20082190_010_20102430   [Rechnungen_2007_1.xls]Tabelle1!8
3P554.F1_200722.05.20072190_010_201123414   [Rechnungen_2007_2.xls]Tabelle1!18
4567_200718.06.20072190_010_201213123   [Rechnungen_2007_3.xls]Tabelle1!28

Formeln der Tabelle
ZelleFormel
A2=INDEX(INDIREKT(INDEX($H:$H;VERGLEICH(ZEILE(A1); $I:$I;1)+1)&"A:D"); ZEILE()+1-INDEX($I:$I;VERGLEICH(ZEILE(A1); $I:$I;1)); SPALTE())
H2="[Rechnungen_"&$H$1+KÜRZEN((ZEILE(H1)-1)/12)&"_"&REST(ZEILE(H1)-1;12)+1&".xls]Tabelle1!"
I2=I1+VERWEIS(9;1/((INDIREKT(H2&"A1:A62535")<>"")); ZEILE(A:A))-1


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
hey
25.06.2008 19:35:00
Aron
Danke dir trotzdem bin bisel verwirrt mit den ganzen information.
Ich versuch auch mal deine Idee. Moie wenn ich wieder einen frischen Kop hab.
cya as

Frage noch offen,bitte helfen
26.06.2008 12:46:06
Aron
hi hat noch jemand eine Idee wie ich den benannten VBA code ändere das er ganze Spalten aus den Dateien kopiert?
Danke
cya As
schönes WE (bald)

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige