Mit Userform Tabelle nach bestimmter Zahl durchsuchen und nachfolgende Zellenwert ausgeben????

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MSB2000.

    Mit Userform Tabelle nach bestimmter Zahl durchsuchen und nachfolgende Zellenwert ausgeben????

    Hallo Leute,

    ich habe ein riesen Problem:-( Also ich habe eine Tabelle, welche mit Zufallszahlen gefühlt ist. Ich möchte gerne mit einer Userform die ganze Tabelle nach einem Wert durchsuchen und lediglich die nachfolgende Zelle in einer Textbox wiedergeben.

    Zum Beispiel:

    Spalte A1:A50 (befinden sich Zufallszahlen von 1 - 100)

    In einer Userform im Textfeld1 gebe ich eine Zahl, zum Beispiel 15, ein. Nehmen wir an in der Zelle A9 steht die Zahl 15. Jetzt möchte ich in Textbox2 die Zelle A10 ausgegeben bekommen, via Button oder sonst was.

    Ist das möglich????



    Gruß und Dank
    Ja sicher.
    Mal aus dem Kopf versuch:

    Visual Basic-Quellcode

    1. public function FindeZahl(byval sZahl as string) as long
    2. Dim i as integer
    3. if trim sZahl="" then exit function
    4. for i = 1 to 50
    5. if cells(1,i).value=szahl then
    6. msgbox "Die Zahl " & sZahl & " befindet sich vor " & vbcrlf & "A" & trim(str(i)), vbokonly + vbexclamation,"Zahlenfinder"
    7. findezahl=i
    8. exit for
    9. endif
    10. next i
    11. end function
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Mmmhhh, nee so meine ich das nich. Also eine Suche funktioniert, auf umständlichen Wege. Ich habe dann Meine Textboxen mit Zellen verknüpft, so das was in der Textbox steht, auch gleich in einer bestimmten Zelle stehen soll, von der aus das Makro funzt.

    Hier erstmal zum schauen, vielleicht versteht ihrs dann besser.

    Visual Basic-Quellcode

    1. Sub suche_1()
    2. Dim zelle1 As Range
    3. Dim zelle2 As Range
    4. Dim szahl1 As String
    5. Dim szahl2 As String
    6. Dim aus1 As String
    7. Dim aus2 As String
    8. szahl1 = Range("h1").Value ' Mein Suchfeld1
    9. szahl2 = Range("h4").Value ' Mein Suchfeld2
    10. If szahl1 = "" Then Exit Sub
    11. Set zelle1 = Worksheets(1).Columns(1).Find(szahl1, lookat:=xlWhole)
    12. Set zelle2 = Worksheets(1).Columns(1).Find(szahl2, lookat:=xlWhole)
    13. Range("j1").Value = zelle1.Address ' Ausgabe der gefundenen Position, der ersten Zahl
    14. Range("j4").Value = zelle2.Address ' Ausgabe der gefundenen Position, der zweiten Zahl
    15. ' ** Anzeigen der unmittelbar danach kommenden Zahl der Zelle
    16. Range("j1").Select
    17. Selection.AutoFill Destination:=Range("j1:j2"), Type:=xlFillDefault
    18. Range("j1:j2").Select
    19. Range("j4").Select
    20. Selection.AutoFill Destination:=Range("j4:j5"), Type:=xlFillDefault
    21. Range("j4:j5").Select
    22. ' ** Ausgabe der danach kommenden Zahl
    23. aus1 = Range("j2").Value
    24. Range("i1") = Range(aus1)
    25. aus2 = Range("j5").Value
    26. Range("i4") = Range(aus2)
    27. End Sub


    Jetzt das GROßE ABER. Nehmen wir an in der Spalte A stehen nur Zufallszahlen. Jetzt möchte ich eine Zahlenkombo vorgeben. Zum Beispiel sage ich, nach der Zahl 17, kommt unmittelbar die Zahl 26. Das diese Suche für eine einzelne Zelle funzt, weiß ich jetzt. Geht das aber auch für zwei???

    Also ich sage nach 17, kommt die 26. Jetzt soll die suche duchlaufen, bis zum Beispiel in Zelle A100 die Zahl 17 steht und in Zelle A101 die Zahl 23. Ist das jetzt ein wenig mehr verständlich?? Irgendwie nich ne....weiß auch nich wie ichs besser erklären soll...

    mmmmhhhhh.....

    MSB2000 schrieb:

    Jetzt das GROßE ABER. Nehmen wir an in der Spalte A stehen nur Zufallszahlen. Jetzt möchte ich eine Zahlenkombo vorgeben. Zum Beispiel sage ich, nach der Zahl 17, kommt unmittelbar die Zahl 26. Das diese Suche für eine einzelne Zelle funzt, weiß ich jetzt. Geht das aber auch für zwei???

    Also ich sage nach 17, kommt die 26. Jetzt soll die suche duchlaufen, bis zum Beispiel in Zelle A100 die Zahl 17 steht und in Zelle A101 die Zahl 23. Ist das jetzt ein wenig mehr verständlich?? Irgendwie nich ne....weiß auch nich wie ichs besser erklären soll...

    mmmmhhhhh.....
    Nee, das ist in der Tat unverständlich: "Du sagst nach 17 kommt die 26" und die Suche soll in Zelle A100 nach 17 gucken und in Zelle A101 nach 23. Ich vermute, Du hast Dich verschrieben.

    BTT: In Zeile 3 von peterfido ist ein kleiner Fehler (ist mir auch nur aufgefallen, weil VBA gemeckert hat):

    Visual Basic-Quellcode

    1. if trim(sZahl)="" then exit function


    Und bei der Cells-Eigenschaft sind Zeile und Spalte vertauscht. Aber sonst funzt die Funktion einwandfrei. Versuch doch mal anhand der Formel von peterfido die Suche derart abzuändern, dass Du noch eine weitere Abfrage in die Schleife einbaust, die die nächste Zelle abfragt. Das dürfte eigentlich nicht so schwer sein. Code poste ich hier nicht mehr, denn C & P hilft ja keinem. Falls es weiterhin Probleme geben sollte, einfach mal den Code posten....
    Nee ich hab mich nich verschrieben:-) Genau das soll passieren. Ich beschäftige mich gern mit Zufallsabläufen. Ich möchte herausfinden ob ein logarithmus selbst bei Zufallszahlen gibt. Denn immerhin werden Zufallszahlen zwar "zufällig" gebildet, aber immer noch von einem Computer. Deswegehn möchte voraussagen treffen können:-) (Mal so als Hintergrund)

    Also möchte ich eine Tabelle gefüllt mit Zusatzzahlen, sagen wir von 1-50. In meiner userform gebe ich in Textboxen gewisse Zahlenkombos vor, zum Beispiel: Textbox1 = 14 | Textbox2 = 21 usw.

    Jetzt möchte ich via Button, das diese Zahlenkombo in der Tabelle gesucht wird. Und zum Beispiel findet er die 14 in Zelle A100 aber in Zelle A101 steht 30 -> also weitersuchen. Solange bis die Kombo passt. Nehmen wir an in Zelle A1000 steht die 14 und in A1001 die 21 -> Die gesuchte Zahlenkombo ist gefunden - Das Ergebnis soll nun A1002 sein. Quasi Welche Zahl kommt danach:-)

    Der Code bzw die Funktion von Peterfido funktioniert super - nur nicht das was ich suche. C & P bringt mir auch nix. Brauch nen Lösungsansatz und keine Lösung;-) Will ich ja allein rauskriegen, nur häng ich irgendwie......
    Lösungsansatz: (ganz bewusst nicht in Basic)

    Subroutine auf den Button legen: (bei Klick)

    Zahl1 aus Textbox1
    Zahl2 aus Textbox2

    Zählschleife von 1 bis 1000
    wenn spalte1, aktuellezeile = zahl1 dann
    wenn spalte1, aktuellezeile + 1 = zahl2 dann
    ergebnis = spalte1, aktuellezeile + 2
    zählschleife verlassen
    (end if)
    (end if)
    zähler erhöhen

    Das dürfte jetzt aber nicht mehr so schwer sein...