Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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
Inhaltsverzeichnis

Zahlen aus Datei in einer anderen finden

Zahlen aus Datei in einer anderen finden
Kai
Hallo zusammen,
ich habe folgendes Problem, das ich bisher immer über suchen eintippen und manuel überprüfen löse. Ich wollte nun hier fragen, ob das evtl. auch automatisiert möglich ist.
Ich habe in einer Datei eine Liste mit Zahlen (Datei A.xls). In mehreren weiteren Datei stehen viele Werte (Datei B.xls usw.).
Das erste Problem ist, das Datei B.xls nicht immer B heißt, sondern evtl. auch C oder F.
Mein Ziel:
Ich möchte das die Zahlen aus Datei A.xls überprüft werden und wenn sie in Datei B.xls vorkommen sollen bestimmte Zellen kopiert werden.
Beispiel:
Datei A.xls
A1 100
A2 101
A3 500
Datei B. xls
Datenblatt xy100
A6 500 K6 0
Datenblatt xy3
A10 100 K10 100
Nach der Überprüfung sollte Datei A.xls so aussehen:
A1 100 B1 Datei B. xls C1 Datenblatt xy3 D1 100
A2 101
A3 500 B3 Datei B. xls C3 Datenblatt xy100 D3 0
Ist das möglich und falls Ja hat jemand eine Idee dazu?
Viele Grüße
Kai
AW: Zahlen aus Datei in einer anderen finden
15.06.2011 13:48:49
ChrisL
Hi Kai
Sub MachMal()
Dim strDatName As Variant
Dim wbA As Workbook, wbB As Workbook
Dim wsA As Worksheet, wsB As Worksheet
Dim iZeile As Long, letzteZeile As Long
Dim Suchnummer
' Dateinnamen definieren
strDatName = Application.GetOpenFilename("ExcelFiles (*.XLS), *.xls")
If strDatName  False Then
Set wbB = Workbooks.Open(strDatName)
Set wbA = ThisWorkbook
Else
Exit Sub
End If
' Tabellennamen definieren
' ***** Die erste Tabelle der Datei A, ggf. anpassen! *****
Set wsA = wbA.Worksheets(1)
' Suche
For iZeile = 1 To wsA.Range("A65536").End(xlUp).Row
Suchnummer = wsA.Cells(iZeile, 1)
For Each wsB In wbB.Worksheets
letzteZeile = wsB.Range("A65536").End(xlUp).Row
If WorksheetFunction.CountIf(wsB.Range("A1:A" & letzteZeile), Suchnummer) > 0 Then
wsA.Cells(iZeile, 2) = wbB.Name
wsA.Cells(iZeile, 3) = wsB.Name
wsA.Cells(iZeile, 4) = WorksheetFunction.VLookup(Suchnummer, wsB.Range("A1:K" &  _
letzteZeile), 11, 1)
Exit For
End If
Next wsB
Next iZeile
' Datei B schliessen
wbB.Close
End Sub

cu
Chris
Anzeige
AW: Zahlen aus Datei in einer anderen finden
15.06.2011 22:47:34
Kai
Hallo Chris,
mit so einer perfekten Lösung hatte ich gar nicht gerechnet! Vielen Dank dafür, es ist genau so wie ich es mir vorgestellt habe und funktionierte auf Anhieb perfekt.
Vielen vielen Dank und Gruß
Kai
AW: Zahlen aus Datei in einer anderen finden
16.06.2011 08:14:02
Kai
Hallo zusammen,
gerade hat sich bei mir doch noch eine Frage ergeben. Wenn der Dateiname übernommen wird steht dort immer .xls. Dies ist auch richtig, da die Datei mit vollen Namen so heißt. Kann ich es evtl ohne das .xls übernehmen?
Viele Grüße
Kai
AW: Zahlen aus Datei in einer anderen finden
16.06.2011 10:09:52
ChrisL
Hi Kai
Danke für die Rückmeldung.
Ändere
wsA.Cells(iZeile, 2) = wbB.Name
in
wsA.Cells(iZeile, 2) = Left(wbB.Name, Len(wbB.Name) - 4)
cu
Chris
Anzeige
AW: Zahlen aus Datei in einer anderen finden
16.06.2011 11:02:31
Kai
Hallo Chris,
es macht genau das was es soll, aber leider funktioniert es nicht so wie ich es mir vorgestellt habe.
Die Datei heißt 2011.04.06.xls, in der Zelle steht jetzt 2011.04.06. Als Formatierung habe ich MM eingegeben, da ich nur den Monat anzeigen möchte. Allerdings wird immer das ganze Datum angezeigt.
Noch mehr zu löschen wäre kein Problem, allerdings genau den Monat bekomme ich nicht hin.
Gruß Kai
AW: Zahlen aus Datei in einer anderen finden
16.06.2011 15:46:09
ChrisL
Hi Kai
Hier mal ein Ansatz (Text in Datum umwandeln):
Sub t()
Dim str As String
str = "2006.10.21."
Range("A1") = DateSerial(Left(str, 4), Mid(str, 6, 2), Mid(str, 9, 2))
End Sub
cu
Chris
Anzeige
AW: Zahlen aus Datei in einer anderen finden
17.06.2011 08:35:05
Kai
Hallo Chris,
ich hatte versucht das ganze in eine Schleife zu bauen, da der von dir angegebene Code zwar funktioniert, aber eben überall das Datum 2006.10.21 einträgt.
Ich hatte mir vorgestellt, das so alle Zeilen durchlaufen werden und in Spalte C der Text in Datum umgewandelt wird.
Dim str As String
Dim zZeile As Long
For zZeile = 1 To zZeile = 500
str = "zZeile, 3"
Range("C4") = DateSerial(Left(str, 4), Mid(str, 6, 2), Mid(str, 9, 2))
Exit For
Next zZeile
Wenn ich es manuell mache und mit dem Recorder aufzeichne, habe ich folgende Lösung gefunden, die aber auch nur manuell und nicht per Makro funktioniert:

Range("C4:C499").Select
Selection.TextToColumns Destination:=Range("C4"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

Bereich makieren -> Text in Spalten -> weiter -> weiter -> Datum -> fertigstellen
Viele Grüße
Kai
Anzeige
AW: Zahlen aus Datei in einer anderen finden
21.06.2011 01:46:59
Kai
Hallo!
Habs leider nicht hinbekommen, konnte es aber über Umwege mit Verketten usw. anders lösen.
Ist zwar nicht so elegant, hat mir aber geholfen mein Darstellungsproblem zu lösen.
Vielen Dank Chris für Deine Hilfe und Anregungen!
Gruß Kai
AW: Zahlen aus Datei in einer anderen finden
21.06.2011 02:53:40
fcs
Hallo Kai,
hier Prozeduren, mit denen man ein Datum JJJJ.MM.DD als Text in das excelinterne Datum umwandeln kann.
Gruß
Franz
Private Sub aTestInDatum_fest()
Dim Spalte As Long, wks As Worksheet
Set wks = ActiveSheet
With wks
Spalte = 4 'Spalte mit Textwerten als Datum
'Spalte mit Datumsformat formatieren - ggf. anpassen
.Columns(Spalte).NumberFormat = "MM" 'nur Monat des Datums anzeigen
'oder Spalte als Standard formatieren
'.Columns(Spalte).NumberFormat = "General"
'Zeile 1 als Startwert Zellbereich ggf. anpassen
Call TextInDatum2(Bereich:=.Range(.Cells(1, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp))) _
End With
End Sub
Sub TextInDatum2(Bereich As Range)
'wandelt Datums-Texte der Form "2006.10.21" (JJJJ.MM.TT bzw. YYYY.MM.DD) in _
Excel-Datum um
Dim str As String, Zelle As Range
Application.ScreenUpdating = False
For Each Zelle In Bereich
str = Zelle.Text
If IsDate(Left(str, 4) & "-" & Mid(str, 6, 2) & "-" & Mid(str, 9, 2)) Then
Zelle.Value = DateSerial(Left(str, 4), Mid(str, 6, 2), Mid(str, 9, 2))
End If
Next Zelle
Application.ScreenUpdating = False
End Sub

Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige