Verzweiflung bei Suchfunktion
#11
Hola,

Zitat:besteht aber die Möglichkeit nach Sequenz und Fahrzeugnummer das wieder zu geben ?
was meinst du damit genau?
Gruß,
steve1da
Antworten Top
#12
entweder trage ich in M4 denn Wert aus Spalte B ein oder aus Spalte D ein
Antworten Top
#13
Code:
=WENNFEHLER(SVERWEIS($M4;$D$4:$I$26;SPALTE(B1);0);SVERWEIS($M4;$B$4:$I$26;SPALTE(D1);0))
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • kingkong
Antworten Top
#14
Ich vermute mal, dass du in den Spalten B und D suchen willst.

Ins Modul  Tabelle2:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Zeilennummer As Range, i As Long
    If Not Intersect(Target, Range("M4")) Is Nothing Then
        With Tabelle2
            Set Zeilennummer = .Range("B4:D" & .Cells(.Rows.Count, 2).End(xlUp).Row).Find(.Range("M4").Value2, lookat:=xlPart, LookIn:=xlFormulas)
            If Not Zeilennummer Is Nothing Then
                For i = 13 To 17
                    .Cells(7, i) = .Cells(Zeilennummer.Row, i - 8)
                Next i
            Else
                For i = 13 To 17
                    .Cells(7, i) = ""
                Next i
            End If
        End With
    End If
End Sub
Aus wer weiss was für einen Grund musste ich in deiner Datei die Zellverweise in Tabelle2 einschliessen. Normalerweise braucht man das im Modul des Tabellenblattes nicht. Irgend was ist da nicht mehr so wie es sein soll.

Gruß Uwe


Angehängte Dateien
.xlsm   haken grün.xlsm mit Bezug.xlsm (Größe: 20,92 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • kingkong
Antworten Top
#15
bekommt man bei keiner Angabe noch das #NV weg ?
Antworten Top
#16
Dann muss um meine Formel noch ein Wennfehler() gepackt werden.
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • kingkong
Antworten Top
#17
Hallo,

du brauchst noch vor der Formel, welche du verwendest =WENNNV(deine Formel;"")

2. Variante: Du verwendest in deiner Datei VBA nimm den Code in #14

Der lässt sich auch zwecks Gestaltung problemlos erweitern.
z.B. so:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Zeilennummer As Range, i As Long
    If Not Intersect(Target, Range("M4")) Is Nothing Then
        With Tabelle2
            Set Zeilennummer = .Range("B4:D" & .Cells(.Rows.Count, 2).End(xlUp).Row).Find(.Range("M4").Value2, lookat:=xlPart, LookIn:=xlFormulas)
            If Not Zeilennummer Is Nothing Then
                For i = 13 To 17
                    If .Cells(Zeilennummer.Row, i - 8) = "V" Then
                        .Cells(7, i) = "Ja"
                    Else
                        .Cells(7, i) = "Nein"
                    End If
                Next i
            Else
                For i = 13 To 17
                    .Cells(7, i) = ""
                Next i
            End If
        End With
    End If
End Sub


Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • kingkong
Antworten Top
#18
Danke hat beides wunderbar geklappt !!!!
Antworten Top
#19
Hallo Uwe,

Frage an den Experten.

Ich dachte die Makrolösung  zu verstehen, Logik und Aufbau kann ich nachvollziehen, aber....

warum bringt er bei 1-stelliger Suchwerteingabe ei falsches Ergebnis?
(Immer die Werte aus Zeile 5 (also dem zweiten Auswahlwert).

Muss ich mir da noch etwas mehr Hintergrundwissen vom Makroaufbau aneignen, oder übersehe ich da irgendeine Weichenstellung im Makro?

Für die Hilfe einem Lernwilligen zu helfen schon mal Dank.

Gruß Rudi
Antworten Top
#20
Hallo Rudi,

eigentlich logisch, diese Prozedur klappert die Spalten B und D ab und der erste Treffer kann als Zeilennummer weiter verarbeitet werden. Da in den Zeilen 4 und 5 die Zahlen 1 bis 9 jeweils enthalten sind wird der erste Treffer ausgegeben. Um das zu verhindern kann man mittels:
Code:
If Len(.Range("M4")) > 2 Then

      'ursprüngliche Prozedur

Else

      MsgBox "Es müssen mindestens 3 Zeichen eingegeben werden"

End if
die Ausgabe falscher Werte einigermaßen verhindern. Sollte es immer auf einmalige Werte ankommen bleibt mit der Methode .Find noch die Möglichkeit zu xlWhole statt xlPart. Aber das war ja nicht die ursprüngliche Frage.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Rudi'S
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste