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

Werte suchen und anderen Spaltenwert zurück geben

Werte suchen und anderen Spaltenwert zurück geben
12.06.2009 20:51:05
Andre
Hallo alle zusammen,
habe ein Makro, dass in Datei_1 Spalte A Zeile für Zeile eine Übereinstimmung in einer
Datei_2 https://www.herber.de/bbs/user/62397.xls
in Spalte B sucht und wenn eine Übereinstimmung gefunden wurde, dann wird der Zellwert aus Datei 2 https://www.herber.de/bbs/user/62398.xls
von Spalte F in Datei_1 Spalte E geschrieben.(in Datei 1 gelbe Zellen)
Jetzt kommt es vor, dass in Datei 2 mehrmals das Suchergebnis vorhanden ist (mitunter bis 10 mal).
Wenn das der Fall ist, stehen diese in Datei 2 immer untereinander.
Nun möchte ich erreichen, dass bei mehreren Übereinstimmung die Zellwerte aus SpalteF in einer Zeile geschrieben werden so wie ich es in Datei 1 vorgenommen habe (grüne Zellen).
Für eine Hilfe wäre ich sehr DANKBAR!
MFG Andre

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte suchen und anderen Spaltenwert zurück geben
13.06.2009 23:00:21
Josef
Hallo Andre,
probier mal.
Sub WerteUebernehmen()
  
  Dim objWbkZiel As Workbook, objwksZiel As Worksheet
  Dim objWbkQuelle As Workbook, objwksQuelle As Worksheet
  Dim objZelleQ As Range
  Dim lngZeileZ As Long, lngSpalte As Long, strFirst As String
  Dim varSuchen As Variant
  Dim arrGefunden() As Boolean
  Dim varAuswahl As Variant
  Dim bolNichtgefunden As Boolean
  Dim varNotgefunden As Variant
  
  Set objWbkZiel = ActiveWorkbook
  Set objwksZiel = ActiveSheet 'oder objwkbziel.worksheets(1)
  With objwksZiel
    'Array für gefundene Werte setzen, Wert = False
    Redim arrGefunden(6 To .Cells(.Rows.Count, 1).End(xlUp).Row)
    Do
      'Quelldatei auswählen
      varAuswahl = Application.GetOpenFilename(Filefilter:="Exceldatei, *.xls", _
        Title:="Bitte Quell-Datei öffnen")
      If varAuswahl = False Then Exit Do
      'Quelldatei schreibgeschützt öffnen
      Set objWbkQuelle = Workbooks.Open(Filename:=varAuswahl, ReadOnly:=True)
      Set objwksQuelle = objWbkQuelle.Worksheets(1) '1 für die erste Tabelle die ganz links steht
      'die Tabelle1 muss nicht aktive sein!!
      bolNichtgefunden = False
      varNichtgefunden = Null
      objWbkZiel.Activate
      For lngZeileZ = 6 To .Cells(.Rows.Count, 1).End(xlUp).Row
        strFirst = ""
        lngSpalte = 5
        If arrGefunden(lngZeileZ) = False Then
          varSuchen = .Cells(lngZeileZ, 1) 'Wert aus Spalte A
          'Wert in Spalte B der Quelldatei suchen
          Set objZelleQ = objwksQuelle.Columns(2).Find(What:=varSuchen, _
            LookIn:=xlValues, lookat:=xlWhole)
          If objZelleQ Is Nothing Then
            '1. nicht gefundenen Wert merken
            If bolNichtgefunden = False Then
              bolNichtgefunden = True
              varNichtgefunden = varSuchen
            End If
            'bei nicht gefundenen Werten #NV als Wert in Spalte E eintragen
            .Cells(lngZeileZ, 5).Value = "#NV"
          Else
            'Wert aus Spalte F der gefundenen Zeile in Zieldatei eintragen
            strFirst = objZelleQ.Address
            arrGefunden(lngZeileZ) = True
            Do
              .Cells(lngZeileZ, lngSpalte).Value = objZelleQ.Offset(0, 4).Value
              lngSpalte = lngSpalte + 1
              Set objZelleQ = objwksQuelle.Columns(2).FindNext(objZelleQ)
            Loop While Not objZelleQ Is Nothing And strFirst <> objZelleQ.Address
          End If
        End If
      Next
      'Quelldatei ohne speichern schliessen
      objWbkQuelle.Close savechanges:=False
      If bolNichtgefunden = False Then Exit Do
    Loop Until MsgBox(Prompt:="Der Wert """ & varNichtgefunden & """ wurde nicht gefunden!" & _
      vbLf & vbLf _
      & "in anderer Datei suchen?", Buttons:=vbQuestion + vbYesNo) = vbNo
  End With
  'Variablen zurücksetzen
  Set objWbkZiel = Nothing: Set objwksZiel = Nothing
  Set objWbkQuelle = Nothing: Set objwksQuelle = Nothing
  Set objZelleQ = Nothing
  Redim arrGefunden(0)
End Sub


Gruß Sepp

Anzeige
AW: Werte suchen und anderen Spaltenwert zurück geben
13.06.2009 23:51:36
Andre´
Hallo Sepp,
vielen DANK für Deine Lösung, es funktioniert prima :-)))
wünsch noch ein schönes WE
MFG Andre
noch eine Frage...
14.06.2009 00:06:23
Andre´
kann man noch zwischen Klein- und Großschreibweise unterscheiden.
Wenn ich in meinem Beispiel "Gert" klein schreibe "gert", dann wird auch hier der Wert aus SpalteF übernommen dies soll aber nicht sein.
Ich hoffe, dass es auch hierfür eine Lösung gibt.
Vielen Dank im voraus!
MFG Andre
AW: noch eine Frage...
14.06.2009 00:09:02
Josef
Hallo Andre,
häng bei .Find noch den Parameter "MatchCase" an.
Set objZelleQ = objwksQuelle.Columns(2).Find(What:=varSuchen, _
  LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True)

Gruß Sepp

Anzeige
Nochmals Danke :-))) funzt prima oT
14.06.2009 00:34:36
Andre´

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige