Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert in Spalte suchen und Zeile füllen

Wert in Spalte suchen und Zeile füllen
23.10.2012 12:09:30
Jonas
Liebes VBA-Forum,
ich möchte gerne aus Spalte A einen Wert suchen (in der Zelle können neben dem Suchwort noch andere Zeichen stehen). Wenn die Zelle den Wert enthält, soll eine Variable (hier: SchnittD, ist durch eine Variable im UserForm definiert) in Spalte C der gleichen Zeile ausgegeben werden. Dies sind immer Prozentzahlen im Format 00,0%.
Beispiel:
Suchwort ist in Zelle A3 enthalten, also wird in Zelle C3 die Variable SchnittD ausgegeben.
Die Hilfe hat mich auf die Find-Methode gebracht und dazu gab es auch ein wie ich finde, recht gutes Beispiel. DIeses habe ich versucht anzupassen, jedoch ist mir das nicht so ganz gelungen.
Könnt ihr mir sagen, was ich vergessen habe bzw. was nicht funktioniert? Ich habs leider nicht gefunden...
Hier mein Quellcode:

Sub Makro2()
' Makro2 Makro
Dim letzteSpalteAuswertung As Integer
Dim letzteZeileAuswertung As Integer
Dim SchnittE As Double
SchnittE = 12,3
letzteSpalteAuswertung = Workbooks(1).Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).  _
_
_
Column
'Bestimmen der letzten beschriebenen Zeile der Spalte A
letzteZeileAuswertung = Workbooks(1).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(1).Range(Cells(1, 1), Cells(letzteZeileAuswertung, 1))
Set c = .Find("Profilschnitt D", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Range("C5").FormulaR1C1 = SchnittE
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Wert in Spalte suchen und Zeile füllen
23.10.2012 12:19:37
Rudi
Hallo,
Set c = .Find("Profilschnitt D", LookIn:=xlValues, LookAt:=xlPart)
Gruß
Rudi

AW: Wert in Spalte suchen und Zeile füllen
23.10.2012 13:45:12
Jonas
Hallo Rudi,
danke für deine schnelle Antwort.
Ich habe deinen Tipp übernommen und es funktioniert leider immer noch nicht. Daher habe ich ein kleines Beispiel erstellt, mit dessen Hilfe wir den Fehler hoffentlich finden können...
Hier der Link: https://www.herber.de/bbs/user/82276.xlsm
Nochmals besten Dank!
Viele Grüße
Jonas

Anzeige
AW: Wert in Spalte suchen und Zeile füllen
23.10.2012 14:42:49
Rudi
Hallo,
was soll WorkBooks(1)?
Sub Suche()
' Suchen der Profilschnitte D, E, F
Dim letzteSpalteAuswertung As Long
Dim letzteZeileAuswertung As Long
letzteSpalteAuswertung = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
'Bestimmen der letzten beschriebenen Zeile der Spalte A
letzteZeileAuswertung = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(1).Range(Cells(1, 1), Cells(letzteZeileAuswertung, 1))
Set c = .Find("Profilschnitt D", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(, 2) = "TEST"
Set c = .Find("Profilschnitt D", LookIn:=xlValues, LookAt:=xlPart, after:=c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End Sub

Gruß
Rudi

Anzeige
AW: Wert in Spalte suchen und Zeile füllen
23.10.2012 15:17:17
Jonas
WorkBooks war dann wohl überflüssig... ich habs halt noch nicht so drauf (eigentlich gar nicht) ;-)
Wunderbar! Ganz großartig :D Es klappt endlich, ich danke dir!

AW: Wert in Spalte suchen und Zeile füllen
23.10.2012 16:36:04
Jonas
WorkBooks war dann wohl überflüssig... ich habs halt noch nicht so drauf (eigentlich gar nicht) ;-)
Wunderbar! Ganz großartig :D Es klappt endlich, ich danke dir!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wert in Spalte suchen und Zeile füllen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem Du den Wert in Spalte A suchen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Erstelle ein neues Modul:
    • Klicke im Menü auf Einfügen > Modul.
  4. Füge den folgenden Code ein:

    Sub Suche()
       Dim letzteSpalteAuswertung As Long
       Dim letzteZeileAuswertung As Long
       Dim SchnittE As Double
       SchnittE = 12.3  ' Beispielwert
    
       letzteSpalteAuswertung = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
       letzteZeileAuswertung = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
    
       With Worksheets(1).Range(Cells(1, 1), Cells(letzteZeileAuswertung, 1))
           Set c = .Find("Profilschnitt D", LookIn:=xlValues, LookAt:=xlPart)
           If Not c Is Nothing Then
               firstAddress = c.Address
               Do
                   c.Offset(, 2) = SchnittE  ' Wert in Spalte C ausgeben
                   Set c = .FindNext(c)
               Loop While Not c Is Nothing And c.Address <> firstAddress
           End If
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.
  6. Führe das Makro aus:
    • Gehe auf Entwicklertools > Makros und wähle Suche aus.
    • Klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt"

    • Ursache: Stelle sicher, dass der Suchbegriff korrekt geschrieben ist und in der Spalte A existiert.
  • Fehler: Wert wird nicht in Spalte C ausgegeben

    • Ursache: Überprüfe den Offset-Wert. Stelle sicher, dass Du c.Offset(, 2) korrekt verwendest, um in die richtige Spalte zu schreiben.
  • Fehler: WorkBooks(1) führt zu einem Fehler

    • Lösung: Verwende einfach Sheets(1) anstelle von WorkBooks(1).Sheets(1).

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die SVERWEIS-Funktion in Excel nutzen:

  • Syntax: =SVERWEIS(Suchkriterium; Suchmatrix; Spaltenindex; [Bereich_Verweis])
  • Beispiel: =SVERWEIS("Profilschnitt D"; A:C; 3; FALSCH)

Diese Methode ist einfacher, wenn Du keine Programmierkenntnisse hast, bietet jedoch weniger Flexibilität.


Praktische Beispiele

Angenommen, Du hast folgende Werte in Spalte A:

A B C
Profilschnitt D
Profilschnitt E
Profilschnitt D

Wenn Du das oben genannte VBA-Skript ausführst, wird 12,3% in die Zellen C1 und C3 geschrieben, da der Suchbegriff "Profilschnitt D" gefunden wurde.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler abzufangen und die Ausführung des Codes nicht zu stoppen.

  • Optimiere die Suchgeschwindigkeit: Wenn Du große Datenmengen hast, vermeide .FindNext, da dies die Leistung beeinträchtigen kann. Nutze stattdessen eine Schleife mit .Find.


FAQ: Häufige Fragen

1. Wie kann ich die Suche anpassen, um nach mehreren Begriffen zu suchen?
Du kannst eine Schleife verwenden, um durch ein Array von Suchbegriffen zu iterieren und die .Find-Methode für jeden Begriff aufzurufen.

2. Was kann ich tun, wenn ich die Suchmethode nicht verstehe?
Es empfiehlt sich, die Dokumentation zu VBA zu konsultieren oder Tutorials zu folgen, die grundlegende Konzepte von VBA und der .Find-Methode erklären.

3. Wie kann ich den Wert in einem bestimmten Format ausgeben?
Du kannst die Formatierung direkt in der Zelle festlegen, indem Du c.Offset(, 2).NumberFormat = "0,0%" verwendest, bevor Du den Wert zuweist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige