Wert in Spalte finden und in Nachbarzelle ausgeben

Moderator: ModerationP

Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon SinusWill » 23. Mai 2020, 17:21

Hallo
ich habe ein Skript was überhaupt nicht läuft.
Leider bin ich nicht weiter gekommen aufgrund mangelnder Kenntnisse.
Das Skript soll folgendes machen:
Mappe.png

Einen Wert in Spalte B finden und den Wert in die Nachbarzelle kopieren.
Dabei sollen sowohl die Spalte, in der der Wert gefunden werden soll sowie der Wert selber per Eingabefeld eingegeben werden.
In diesem Fall das Wort 'Hallo'.

Ich weiß, dass das einfach mit einer Formel geht. Skript ist eingebunden in eine Reihe von Skripten die hintereinander Ablaufen, um Exeldokumente für einen Vergleich einheitlich zu machen.

Wenn ich noch fragen darf, freue ich mich, wenn die Spalte, in der der Begriff eingefügt werden soll automatisch nach der Auswahl der Suchspalte links daneben kreiert werden könnte.
Hier ist der Code, den ich bislang habe:
Code: Alles auswählen
Option Explicit
Public Loletzte As Long

Sub suche_und_kopiere()
Dim Loletzte As Long
Dim Spalte As Integer
Dim RngZ As Range
Dim TabName
TabName = InputBox("Bitte geben Sie den Suchbegriff ein")
Spalte = Val(InputBox("Spalte eingeben in der gesucht werden soll"))

If Spalte < 1 Then Spalte = 1
Cells(10, Spalte).Select

For Each RngZ In Worksheets("Tabelle1").Range Spalte
Loletzte = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
If RngZ Like TabName Then Worksheets("Tabelle1").Cells(Loletzte, 1) = RngZ
Next
End Sub


Ich würde mich unendlich freuen, wenn Ihr mir helfen könntet.
Ich bin leider kein VBA-Profi.

Vielen, lieben Dank
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
SinusWill
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 23. Mai 2020, 17:06

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon Raoul21 » 23. Mai 2020, 18:41

Hallo Sin

kannst Du bitte nochmals erklären, welche Bedeutung der von Dir zur Verfügung gestellte Code hier hat oder haben soll?

Soll man diesen Code berücksichtigen oder ihn irgendwie zur Grundlage nehmen?

Gruß,
Raoul
Raoul21
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 78
Registriert: 30. Sep 2014, 20:19

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon GMG-CC » 23. Mai 2020, 19:17

Moin Raoul,
der Satz des TE
Hier ist der Code, den ich bislang habe:
heißt nach meinem Verständnis: "Ich zeige euch einmal, dass ich schon selbst etwas getan habe und nun Hilfe zur Selbsthilfe brauche". Also (vermutlich): Darauf aufbauend bitte ich um Tipps oder ergänzenden Code.

@TE: Prima, du bist einer der wenigen, die keine Komplettlösung zum Nulltarif haben wollen und den Sinn eines Forums begriffen hast.
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4429
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon SinusWill » 24. Mai 2020, 06:43

Hallo Raoul21,
ja, bitte berücksichtige den Code.
Ich bin für alles dankbar, womit ich weiter arbeiten kann.

Wenn von rechts nach links in der gleichen Zellenhöhe kopiert wird hilft das auch schon.

Vielen Dank.
SinusWill
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 23. Mai 2020, 17:06

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon hddiesel » 24. Mai 2020, 08:35

Hallo SinusWill,

teste einmal folgenden CODE.
Hierbei wird die Suche, als einzelnes Wort in der Zelle durchgeführt, wie in deiner Beispielspalte B und Ergebnisspalte A.
Code: Alles auswählen
Sub Fund_B_in_Spalte_A()
    Dim suchWert    As String   'Ist der Wert, nach dem gesucht wird
    Dim maxZei      As Long     'Ist die letzte Zeile, in der Suchspalte
    Dim suchSp      As Long     'Ist die Suchspalte
    Dim rowZei      As Long     'Ist die aktuelle Zeile, in der For - Next Schleife

    suchWert = InputBox("Den Wert eingeben, nach dem gesucht werden soll.", "Das Suchwort in Groß- und Kleinbuchstaben.")
    suchSp = Val(InputBox("Die Spalte eingeben, in der gesucht werden soll.", "Die Spaltenangabe als Zahl."))

    If suchWert = "" Then Exit Sub
    If suchSp = 0 Then suchSp = 2

    With Worksheets("Tabelle1")
        maxZei = .Cells(Rows.Count, suchSp).End(xlUp).Row

        For rowZei = 1 To maxZei
            If .Cells(rowZei, suchSp) = suchWert Then .Cells(rowZei, suchSp - 1) = .Cells(rowZei, suchSp)

        Next

    End With

End Sub

Beachte auch die Dateiendung .xlsm, denn die Dateiendung .xlsx, speichert keine Makros.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von hddiesel am 24. Mai 2020, 08:50, insgesamt 1-mal geändert.
Mit freundlichen Grüssen
Karl


BS: Windows 10_64-Bit, MS Office Professional Plus 2016_32-Bit, incl. Microsoft Visual Basic for Applications 7.1
Benutzeravatar
hddiesel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4003
Registriert: 17. Feb 2006, 11:40
Wohnort: Deutschland

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon Raoul21 » 24. Mai 2020, 08:46

Hi

Noch gibt es nichts, wofür Du Dich bedanken kannst.

Was macht denn der Code genau? Und was ist dabei nun zu berücksichtigen?
Ich frage deshalb, weil er bei mir nicht läuft. Aber ich kann ihn lesen, verstehe ihn aber nicht ganz. Und deshalb frage ich nach seiner aktuellen Funktion. Damit ich weiß, wo ansetzen.

Gruß,
Raoul
Raoul21
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 78
Registriert: 30. Sep 2014, 20:19

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon SinusWill » 24. Mai 2020, 08:57

Lieber hddiesel,
das Skript macht genau was es soll. Es läuft perfekt.

Wenn es möglich wäre noch neben der definierten Suchspalte eine neue leere einzufügen, in die das Ergebnis kopiert werden soll wäre das super.
Aber ich bin mit diesem Code unendlich glücklich.

Vielen Dank
SinusWill
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 23. Mai 2020, 17:06

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon hddiesel » 24. Mai 2020, 09:08

Hallo Raoul21,

ich habe ein Skript was überhaupt nicht läuft.
Leider bin ich nicht weiter gekommen aufgrund mangelnder Kenntnisse.

Ich sehe das so, jeder fängt einmal Klein an.
Lernen kann man aus einem CODE, welcher schon funktioniert, bei dem man versuchen kann, den Makroablauf zu Verstehen.
Dabei Hilft auch die Excelhilfe und Forenhilfe, sowie Infos aus dem Netz.
Ist wie Laufen lernen bei Kinder, sie schauen es bei anderen Kinder und Erwachsen ab und versuchen es dann mit ihrer Hilfe selbst.
Mit freundlichen Grüssen
Karl


BS: Windows 10_64-Bit, MS Office Professional Plus 2016_32-Bit, incl. Microsoft Visual Basic for Applications 7.1
Benutzeravatar
hddiesel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4003
Registriert: 17. Feb 2006, 11:40
Wohnort: Deutschland

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon SinusWill » 24. Mai 2020, 09:37

Lieder habe ich doch einen Fehler im Skript gefunden.
Wenn die Werte in anderer Spalte als B stehen funktioniert das Skript bei mir nicht.

Ich habe das Wort und die neue Spalte (C) eingegeben.

Ich denke es liegt hieran:
If suchSp = 0 Then suchSp = 2

Ist es möglich die selektierte Spalte hier anzusetzen.
Zuletzt geändert von SinusWill am 24. Mai 2020, 09:39, insgesamt 1-mal geändert.
SinusWill
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 23. Mai 2020, 17:06

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon MisterBurns » 24. Mai 2020, 09:37

Leute, ihr gebt nicht die dem TE passenden Antworten, aus diesem Grund geht es hier weiter:
https://www.ms-office-forum.net/forum/s ... p?t=367979
Schöne Grüße
Berni
MisterBurns
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1645
Registriert: 28. Mär 2018, 13:13

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon Raoul21 » 24. Mai 2020, 09:52

Hi hddiesel

hast eine "Komplettlösung zum Nulltarif" geliefert, noch dazu mit nachvollziehbarer Beschreibung der Variablen. Einladend für jeden interessierten Excel-Programmierer (und -rin selbstverständlich), dies anzuwenden, weiterzuentwickeln und Neues darauf aufzubauen.

Hast dafür vom TE überzeugenden Dank geerntet, also voller Erfolg für beide Seiten.

Ich verstehe Dich in jeder Hinsicht. Auch ich lasse mich manchmal zu solchen Aktionen hinreißen, meistens auch mit Erfolg. Deswegen habe ich hier geantwortet. Nur, der Zusammenhang zum bereitgestellten Code war mir etwas verborgen geblieben. Anderseits wollte ich ihn auch einbeziehen, so weit wie möglich.

Mit meinem 09:46-Beitrag habe ich begonnen, dem TE zu antworten, bevor Du Deinen "09:35"-Beitrag gebracht hast. Sonst hätte ich ja gar nicht weiter geschrieben, so überzeugend war Deine Lösung, also Posting und Code.

Alles Gute. Bye, Raoul
Raoul21
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 78
Registriert: 30. Sep 2014, 20:19

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon hddiesel » 24. Mai 2020, 10:02

Hallo SinusWill,

Wenn deine Suchspalte B ist, dann hilft dir die Makroaufzeichnung weiter.
Menüpunkt Entwicklertools
Makroaufzeichnen wählen und die Anzeige mit OK bestätigen.

Ist die Aufzeichnung gestartet,
einen Rechtsklick auf die Spaltenbezeichnung B ausführen, die Spalte B wird dabei Markiert
danach aus der Rechtsklick- Kontextauswahl, Zellen einfügen wählen,
danach Makroaufzeichnen beenden wählen

Du hast jetzt z.B. folgendes Makro erhalten.
Code: Alles auswählen
Sub Makro1()
'
' Makro1 Makro
'

'
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub


Immer wenn du dieses Makro ausführst, wird die Spalte B Markiert und links der Spalte A, eine neue Spalte eingefügt.
Aus dem ausgezeichneten Code, kannst du jetzt Code, für deine Makroerweiterung nutzen.

Hier ein Beispiel:
Code: Alles auswählen
Sub Fund_B_in_Spalte_A()
    Dim suchWert    As String   'Ist der Wert, nachdem gesucht wird
    Dim maxZei      As Long     'Ist die letzte Zeile, in der Suchspalte
    Dim suchSp      As Long     'Ist die Suchspalte
    Dim rowZei      As Long     'Ist die aktuelle Zeile, in der For - Next Schleife

    suchWert = InputBox("Den Wert eingeben, nach dem gesucht werden soll.", "Das Suchwort in Groß- und Kleinbuchstaben.")
    suchSp = Val(InputBox("Die Spalte eingeben, in der gesucht werden soll.", "Die Spaltenangabe als Zahl."))

    If suchWert = "" Then Exit Sub
    If suchSp = 0 Then suchSp = 2

    With Worksheets("Tabelle1")
        '*** CODE- Erweiterung Start
        Columns(suchSp).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        suchSp = suchSp + 1
        '*** Code- Erweiterung Endung
       
        maxZei = .Cells(Rows.Count, suchSp).End(xlUp).Row

        For rowZei = 1 To maxZei
            If .Cells(rowZei, suchSp) = suchWert Then .Cells(rowZei, suchSp - 1) = .Cells(rowZei, suchSp)

        Next
       
        'Wählt in der neuen Spalte, die Zelle in der ersten Zeile aus und entfern zugleich die Spaltenmarkierung.
        .Cells(1, suchSp - 1).Select

    End With

End Sub

Die Makroauzeichnung ist eine gute Hilfe, allerding mit mehr Code, als du eigentlich benötigst, hilft Dir jedoch an dein Ziel zukommen.
Wenn du jetzt versuchst, den Makroablauf zu verstehen, das geht im Einzelschritt am Besten,
wenn du den CURSOR in das Makro setzt und mit der Taste F8, im Einzelschritt das Makro ausführst, dann kannst du verfolgen,
was bei jedem Einzelschritt, in deiner Tabelle geschied.

Der Einzelschritt ist auch eine gute Hilfe, um Makrofehler aufzuspüren.

Hilft die das Weiter.
Mit freundlichen Grüssen
Karl


BS: Windows 10_64-Bit, MS Office Professional Plus 2016_32-Bit, incl. Microsoft Visual Basic for Applications 7.1
Benutzeravatar
hddiesel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4003
Registriert: 17. Feb 2006, 11:40
Wohnort: Deutschland

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon hddiesel » 24. Mai 2020, 10:15

Hallo SinusWill,

die Spalte der ausgewählten Zelle, als Suchspalte übernehmen, dafür enfällt die Abfrage der Suchspalte.
Code: Alles auswählen
Sub Fund_B_in_Spalte_A()
    Dim suchWert    As String   'Ist der Wert, nachdem gesucht wird
    Dim maxZei      As Long     'Ist die letzte Zeile, in der Suchspalte
    Dim suchSp      As Long     'Ist die Suchspalte
    Dim rowZei      As Long     'Ist die aktuelle Zeile, in der For - Next Schleife

    suchWert = InputBox("Den Wert eingeben, nach dem gesucht werden soll.", "Das Suchwort in Groß- und Kleinbuchstaben.")

    'Die Spalte der aktiven Zelle, als Suchspalte übernehmen
    suchSp = ActiveCell.Column

    If suchWert = "" Then Exit Sub

    With Worksheets("Tabelle1")
        '*** CODE- Erweiterung Start
        Columns(suchSp).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        suchSp = suchSp + 1
        '*** Code- Erweiterung Endung
       
        maxZei = .Cells(Rows.Count, suchSp).End(xlUp).Row

        For rowZei = 1 To maxZei
            If .Cells(rowZei, suchSp) = suchWert Then .Cells(rowZei, suchSp - 1) = .Cells(rowZei, suchSp)

        Next
       
        'Wählt in der neuen Spalte, die Zelle in der ersten Zeile aus und entfern zugleich die Spaltenmarkierung.
        .Cells(1, suchSp - 1).Select

    End With

End Sub

Versuche den CODE zu verstehen und lerne daraus, hilfe gibt Dir dabei auch die Excelhilfe,
indem du Makrobefehle im CODE markierst und die Taste F1 drückst.


Sorry Berni, habe deinen Hinweis erst gelesen, du hast sicher Recht.
Großposting sollte nicht sein, denn dabei arbeiten einige Helfer in ihrer Freizeit für die Tonne. :(
Wenn einmal in Eile, dann die Forenbeiträgen verlinken, danach ist jeder Helfer, über den Stand der Fortschritte Informiert.
:idea:

@ SinusWill, CoSinus, beachte in Zukunft den Hinweis von Berni, respektiere unsere Arbeit, keiner Arbeitet gerne für die Tonne.
Wir machen das alles Gerne und Kostenlos in unserer Freizeit, um anderen zu Helfen.
Mit freundlichen Grüssen
Karl


BS: Windows 10_64-Bit, MS Office Professional Plus 2016_32-Bit, incl. Microsoft Visual Basic for Applications 7.1
Benutzeravatar
hddiesel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4003
Registriert: 17. Feb 2006, 11:40
Wohnort: Deutschland

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon SinusWill » 24. Mai 2020, 11:09

Ich werde beherzigen was Ihr gesagt habt.

Vielen Dank für Eure Hilfe heute.
SinusWill
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 23. Mai 2020, 17:06

Re: Wert in Spalte finden und in Nachbarzelle ausgeben

Beitragvon hddiesel » 24. Mai 2020, 11:26

Hallo SinusWill,

Danke für die Info.
Mit freundlichen Grüssen
Karl


BS: Windows 10_64-Bit, MS Office Professional Plus 2016_32-Bit, incl. Microsoft Visual Basic for Applications 7.1
Benutzeravatar
hddiesel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4003
Registriert: 17. Feb 2006, 11:40
Wohnort: Deutschland


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste