Microsoft Excel

Herbers Excel/VBA-Archiv

VBA - Sverweis | Herbers Excel-Forum


Betrifft: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 06:20:35

Immer wieder Sonntags ;) Morgen alle zusammen,
Ich hab ein kleines Problem, wo ich keine normale excelformel benutzen kann. Ich habe in Spalte B Produktnummer stehen und in den Spalten G bis S die description.
Wenn ich nun eine neue produktnummer am ende der spalte hinzufuege, soll das makro pruefen, ob die nummer in der Spalte A schonmal vorgekommen ist. Falls ja soll er die Spalte G bis S kopieren/uebernehmen. Falls nein, soll er die Spalte G bis S leer lassen.

Ich hab schonmal mit einer aehnlichen Formel gearbeitet, jedoch bekomme ich es nicht hin. Hier mein Ansatz:

Sub sverweis()
Dim i As Long
Dim lRowA As Long, lRowB As Long
lRowB = Cells(Rows.Count, 8).End(xlUp).Row
X = Range("B4:G" & lRowB).Address
 If Range("G" & i) <> "" Then
    Range("G4") = "=VLOOKUP(B4, " & X & " ,2,0)"
    With Range("G4:G" & lRowB)
      .FillDown
   End With
  End If
End Sub


Ich glaube das ich den Ansatz nicht verwenden kann ...

  

Betrifft: AW: VBA - Sverweis von: BoskoBiati
Geschrieben am: 10.01.2010 08:03:44

Hallo Helge,

irgendwie kann ich dem Ganzen nicht folgen. Das was Du hier als Makro angedeutet hast, soll (machts wohl nicht) in die Spalte G eine SVERWEIS-Formel von Zeile 4 bis zum Ende einfügen.
Kann nicht so richtig Sinn machen, wenn Du Spalte G auf die letzte Zeile abfragst und dann in leere Zellen eine Formel eintragen willst. Hat auch mit Deinem Ansinnen, Spalte G bis S zu kopieren nicht zu tun.

Wenn ich das richtig verstehe, willst Du in Ax einen Wert eintragen. Sollte der schon einmal in Spalte A vorhanden sein, dann nimm die Werte aus Gy bis Sy und trage sie in Gx bis Sx ein. Habe ich das so richtig verstanden?


  

Betrifft: AW: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 08:17:58

Morgen, genau so will ich das. Ich hab schon einiges versucht, aber ich komme zu keiner loesung. Der QT soll nur meinen ansatz zeigen. ich weiss nicht wie man ganze bereiche kopiert. Darum nur G. Ich haetten den QT dann so oft hingeschrieben, das alle spalten einbezogen sind. Erst g, dann H, usw.

Aber deine zusammenfassung trifft extrakt was ich will. Ist der sverweis der richtige ansatz ?


  

Betrifft: AW: VBA - Sverweis von: fcs
Geschrieben am: 10.01.2010 09:30:51

Hallo Helge,

mit Suchen statt SVerweis kommt man hier schneller zum Ziel.
Wenn du den Check immer manuell start willst, dann lässt du den Teil unter dem Tabellenblatt-Modul weg.

Gruß
Franz

'Prozedur unter dem Tabellenblatt-Modul

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 And Target.Row = Cells(Rows.Count, 2).End(xlUp).Row Then
    Call CheckProduktNr
  End If
End Sub


'Prozedur in einem allgemeinen Modul

Sub CheckProduktNr()
' CheckProduktNr
  Dim ProduktNr, Zeile, ZellePNr As Range, wks As Worksheet
  Set wks = ActiveSheet
  With wks
    'Spalte 2 (B) Prüfen
    Zeile = .Cells(.Rows.Count, 2).End(xlUp).Row
    If Zeile > 2 Then
      ProduktNr = .Cells(.Rows.Count, 2).End(xlUp).Value
      Set ZellePNr = .Range(.Cells(1, 2), .Cells(Zeile - 1, 2)).Find(What:=ProduktNr, _
          LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False)
      If ZellePNr Is Nothing Then
        'do nothing
      Else
        'Spalte 7(G) bis 19(S) in letzte Zeile kopieren
        .Range(.Cells(ZellePNr.Row, 7), .Cells(ZellePNr.Row, 19)).Copy _
          Destination:=.Cells(Zeile, 7)
      End If
    End If
  End With
End Sub



  

Betrifft: AW: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 10:27:59

Hi Franz,
danke fuer die Antwort und die Loesung. Es laeuft soweit ohne Fehlermeldung, jedoch gibt es keiner Ausgabe. Sprich B300 und B340 haben den selben inhalt (eine Zahl) und der Inhalt aus G300-S300 wird nicht in G340-S340 uebertragen. Kann es Probleme geben, wenn vorher schon doppelte zellen aufgetaucht sind ?


  

Betrifft: AW: VBA - Sverweis von: fcs
Geschrieben am: 10.01.2010 11:08:13

Hallo Helge,

das Makro beginnt ab der Zelle B1 nach unten mit der Suche. An der 1. Fundstelle wird die Suche gestoppt und die Werte aus G:S in die letzte Zeile kopiert. Mehrfache Einträge spielen dabei keine Rolle.

Hast du das Makro "CheckProduktNr" im Schrittmodus mal getestet? Bei mir funktioniert es einwandfrei.

Gruß
Franz


  

Betrifft: AW: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 11:33:46

Hab das ganz mal in einer simplen Tabelle aus probiert, da klappt es super. Danke Franz ! Jetzt muss ich nur noch den Verursacher in der maintabelle finden. Trotzdem riesen Dank fuer die Hilfe ! Wenn ich die Loesung hab werde ich sie posten. Wuensche noch einen schoenen Sonntag.


  

Betrifft: AW: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 12:16:35

Hey endlich hab ich es. Ich musste nur die Spalte B als Zahl formatieren. THX nochmal, jetzt hab ich auch sonntag :)


  

Betrifft: AW: VBA - Sverweis von: Helge Kuehn
Geschrieben am: 10.01.2010 12:32:02

Formatierung war es doch nicht! Es lag daran, dass A3:S5000 als liste formatiert waren. Mit der Liste klappt es nicht. Zellenformatierung ist egal.


Beiträge aus den Excel-Beispielen zum Thema "VBA - Sverweis"