Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

Zeilen und Spalten Abfrage

Zeilen und Spalten Abfrage
16.07.2014 07:47:06
Bon
Hallo zusammen,
ich bastle gerade an einem Code:
Ich habe zwei Tabellen.
Ich möchte, dass die Inhalte der Quelldatei in die Zieldatei eingetragen werden, wenn der Text in Zeile 4 bzw. 10 und Spalte A beider Tabellen übereinstimmt.
Hier ein Beispiel:
Tabellenblatt "Quelldatei"
A B C D
4 Apfel Pfirsich Orangen
5 Saft 5 3 1
6 Schorle 1 0
7 Bier 2 3 1
8 …
Tabellenblatt" Zieldatei"
A B C D
10 Apfel Orangen Pfirsich
11 Saft 5 1 3
12 Bier 2 3 1
13 …
14
Existiert ein Begriff in Spalte B in der Quelldatei nicht, dann soll es leer bleiben.
Den Code den ich bisher gefunden habe bezieht sich auf genaue Spaltenangaben.
Ich möchte, dass Excel in Zeile 4 (von A bis Q) der Quelldatei geht und mit Zeile 10 der Zieldatei vergleicht; wenn dann auch die Begriffe in Spalte A überein stimmen soll er die Zahl hineinschreiben.Die relevanten Zahlen in meiner Quelldatei sind von A1:Q37.
Sub Uebertragen_Frucht_1()
'Zieltabelle, Quelltabelle
Uebertragen_Frucht "Tabelle1", "Tabelle2"
End Sub
Function Uebertragen_Frucht(Ziel As String, Quelle As String)
Dim colDummy As Collection
Dim colZeilen As New Collection
Dim i As Long
Dim k As Long
Dim colQuelle As Long
Dim colZiel As Long
Dim strSearch As String
Dim varDummy As Variant
Dim wsZiel As Worksheet
Dim wsQuelle As Worksheet
Dim dtmBeginn As Date
On Error Resume Next
dtmBeginn = Now
Set wsZiel = Worksheets(Ziel)
Set wsQuelle = Worksheets(Quelle)
With wsQuelle 'Quelldatei
For i = 5 To 50
strSearch = CStr(.Cells(i, 1))
If strSearch  "" Then
Set colDummy = New Collection
colZeilen.Add colDummy, "X-" & strSearch
colZeilen("X-" & strSearch).Add i, "Quellzeile"
End If
Next
'Zielspalte ermitteln
strSearch = wsQuelle.Range("D4").Text 'gesuchte Frucht in Quelldatei
Set varDummy = wsZiel.Rows(10).Find(what:=strSearch, LookIn:=xlValues, lookat:=xlWhole)
If varDummy Is Nothing Then
MsgBox "Frucht """ & strSearch & """ nicht in Zeile 4 der Zieltabelle gefunden!"
GoTo Beenden
Else
colZiel = varDummy.Column
End If
End With
With wsZiel
For i = 5 To 50
strSearch = CStr(.Cells(i, 1))
If strSearch  "" Then
colZeilen("X-" & strSearch).Add i, "Zielzeile"
End If
Next
'Quellspalte ermitteln
strSearch = wsZiel.Range("D4").Text
Set varDummy = wsQuelle.Rows(4).Find(what:=strSearch, LookIn:=xlValues, lookat:=xlWhole)
If varDummy Is Nothing Then
MsgBox "Frucht """ & strSearch & """ nicht in Zeile 4 der Quelltabelle gefunden!"
GoTo Beenden
Else
colQuelle = varDummy.Column
End If
End With
With wsZiel 'Zieldatenblatt
Application.ScreenUpdating = False
For Each varDummy In colZeilen
i = varDummy("Zielzeile")
k = varDummy("Quellzeile")
.Cells(i, colZiel).Value = wsQuelle.Cells(k, colQuelle).Value
Next
End With
Beenden:
Application.ScreenUpdating = True
End Function

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen und Spalten Abfrage
16.07.2014 16:58:25
fcs
Hallo Bon,
ich hab dein Makro mal angepasst, so dass eine komplette Zeile mit Begriffen mit der Zieltabelle abgeglichen wird.
Gruß
Franz
Sub Uebertragen_Frucht_1()
'Zieltabelle, Quelltabelle
Uebertragen_Frucht wsZiel:=ActiveWorkbook.Worksheets("TabZiel"), _
wsQuelle:=ActiveWorkbook.Worksheets("TabQuelle"), _
Zeile_QT:=4, Zeile_ZT:=10
End Sub
Function Uebertragen_Frucht(wsZiel As Worksheet, wsQuelle As Worksheet, _
Optional Zeile_QT As Long = 1, Optional Zeile_ZT As Long = 1, _
Optional Spalte_QT As Long = 1, Optional Spalte_ZT As Long = 1)
'wsZiel     = Ziel-Tabelle
'wsQuelle   = Quell-Tabelle
'Zeile_QT   = Zeile mit zu suchenden/abzugleichenden Begriffen in Quell-Tabelle
'Zeile_ZT   = Zeile mit zu suchenden/abzugleichenden Begriffen in Ziel-Tabelle
'Spalte_QT  = Nr. der Spalte mit zu suchenden/abzugleichenden Begriffen in Quell-Tabelle
'Spalte_ZT  = Nr. der Spalte mit zu suchenden/abzugleichenden Begriffen in Ziel-Tabelle
Dim colDummy As Collection
Dim colZeilen As New Collection
Dim i As Long
Dim k As Long
Dim colQuelle As Long
Dim colZiel As Long
Dim strSearch As String
Dim varDummy As Variant
Dim dtmBeginn As Date
Dim Spalte_Q As Long, Spalte_Z As Long
On Error Resume Next
dtmBeginn = Now
With wsQuelle 'Quelldatei
For i = Zeile_QT + 1 To .Cells(.Rows.Count, Spalte_QT).End(xlUp).Row
strSearch = CStr(.Cells(i, Spalte_ZT))
If strSearch  "" Then
Set colDummy = New Collection
colZeilen.Add colDummy, "X-" & strSearch
colZeilen("X-" & strSearch).Add i, "Quellzeile"
End If
Next
End With
With wsZiel
For i = Zeile_ZT + 1 To .Cells(.Rows.Count, Spalte_ZT).End(xlUp).Row
strSearch = CStr(.Cells(i, Spalte_ZT))
If strSearch  "" Then
colZeilen("X-" & strSearch).Add i, "Zielzeile"
End If
Next
'Altdaten in Zieltabelle löschen
i = .Cells(.Rows.Count, Spalte_ZT).End(xlUp).Row 'letzte Zeile mit Daten in Spalte mit  _
Titeln
Spalte_Z = .Cells(Zeile_ZT, .Columns.Count).End(xlToLeft).Column 'letzte Spalte in Zeile  _
mit Titeln
If i > Zeile_ZT And Spalte_Z > Spalte_ZT Then
.Range(.Cells(Zeile_ZT + 1, Spalte_ZT + 1), .Cells(i, Spalte_Z)).ClearContents
End If
End With
Application.ScreenUpdating = False
With wsQuelle 'Quelldatei
'Zellen in Zeile 4 der Quelle abarbeiten
For Spalte_Q = Spalte_QT + 1 To .Cells(Zeile_QT, .Columns.Count).End(xlToLeft).Column
strSearch = wsQuelle.Cells(Zeile_QT, Spalte_Q).Text 'gesuchte Frucht in Quelldatei
'Zielspalte ermitteln
Set varDummy = wsZiel.Rows(Zeile_ZT).Find(what:=strSearch, LookIn:=xlValues, lookat:= _
xlWhole)
If varDummy Is Nothing Then
'do nothing - Frucht aus Quelle in Ziel nicht vorhanden
Else
colZiel = varDummy.Column
colQuelle = Spalte_Q
With wsZiel 'Zieldatenblatt
For Each varDummy In colZeilen
If varDummy.Count > 1 Then 'Collection enthält Item-Info zu Quell- und Zielzeile
i = varDummy("Zielzeile")
k = varDummy("Quellzeile")
.Cells(i, colZiel).Value = wsQuelle.Cells(k, colQuelle).Value
End If
Next
End With
End If
Next
End With
Beenden:
Application.ScreenUpdating = True
End Function

Anzeige

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige