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

Wenn Fuktion mit VBA

Forumthread: Wenn Fuktion mit VBA

Wenn Fuktion mit VBA
05.02.2013 08:48:05
Thomas
Hallo zusammen,
ich möchte gern das Folgende mit VBA lösen anstatt mit einer Formel. Hintergrund ist der, dass das Tabellenblatt "detailed" ist nicht immer in der Arbeitsmappe vorhanden ist und ich eine lange Formel mit Wenn(Istfehler usw. umgehen möchte.
Ich habe zwei Tabellenblätter
Auswertung und detaild
Die Formel sollte gesprochen so aussehen:
Wenn im Tabellenblatt "detailed" Spalte V ab Zeile 3 "weiblich" steht, dann soll in das Tabellenblatt "Auswertung" ein "x" in die Spalte AA ab Zeile 13 eingetragen werden.
Kann mir dabei jemand helfen?
Vielen Dank im Voraus
Gruß
Thomas

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Fuktion mit VBA
05.02.2013 09:32:03
Klaus
Hi Thomas,
auf die schnelle so:
Sub XwennWeiblich()
Dim wksOld As Worksheet
Dim wksNew As Worksheet
Dim lRowOldFirst As Long
Dim lRowOldLast As Long
Dim lRowNewFirst As Long
Dim iColOld As Integer
Dim iColNew As Integer
Dim sSearch As String
Dim sSet As String
Dim rBereich As Range
'Arbeitsblätter
Set wksOld = Sheets("Detailed")
Set wksNew = Sheets("Auswertung")
iColOld = 22         'suche in Spalte V (=22)
lRowOldFirst = 3     'suche ab Zeile 3
iColNew = 27         'schreibe in Spalte AA (=27)
lRowNewFirst = 13    'schreibe ab Zeile 13
sSearch = "weiblich" 'danach suchen
sSet = "x"           'das einsetzen
With wksOld
lRowOldLast = .Cells(.Rows.Count, iColOld).End(xlUp).Row
'Tabellenblatt "alt" durchsuchen bis letzte Zeile
For Each rBereich In .Range(.Cells(lRowOldFirst, iColOld), .Cells(lRowOldLast, iColOld))
If rBereich.Value = sSearch Then
wksNew.Cells(lRowNewFirst, iColNew).Value = sSet 'Bei Bedarf einsetzen
End If
lRowNewFirst = lRowNewFirst + 1 'Zeilencounter für Tabellenblatt "neu"
Next rBereich
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Wenn Fuktion mit VBA
05.02.2013 09:42:47
Thomas
Hallo Klaus,
danke für deine Mühe, ich ging in meiner Naivität davon aus, der Code sei mit 3 Zeilen geschrieben.
Nun ist es so, dass ich noch cirka 30 Spalten "vergleichen" möchte, wie soll ich da vorgehen, für jede Spalte ein Modul erzeugen?
Oder kann ich diesen Teil
iColOld = 22 'suche in Spalte V (=22)
lRowOldFirst = 3 'suche ab Zeile 3
iColNew = 27 'schreibe in Spalte AA (=27)
lRowNewFirst = 13 'schreibe ab Zeile 13
sSearch = "weiblich" 'danach suchen
sSet = "x" 'das einsetzen
mehrfach in deinem Code verwenden?
Gruß
Thomas

Anzeige
AW: Wenn Fuktion mit VBA
05.02.2013 09:59:29
Klaus
Hallo Thomas,
Oder kann ich diesen Teil
iColOld = 22 'suche in Spalte V (=22)
lRowOldFirst = 3 'suche ab Zeile 3
iColNew = 27 'schreibe in Spalte AA (=27)
lRowNewFirst = 13 'schreibe ab Zeile 13
sSearch = "weiblich" 'danach suchen
sSet = "x" 'das einsetzen
mehrfach in deinem Code verwenden?

Ja natürlich. Darum hab ich das ja "variabel" nach oben ausgelagert. Kannst du händisch ändern, oder über einen Call, oder eine Inputbox ....
Den Code ansich bekäme ich auch in 4 Zeilen :-) alles anderes ist nur Komfort-Füllmenge.
Grüße,
Klaus M.vdT.

Anzeige
AW: Wenn Fuktion mit VBA
05.02.2013 10:01:04
Thomas
Hallo Klaus,
vielen vielen Dank!
Gruß
Thomas

Danke für die Rückmeldung! owT.
05.02.2013 10:04:20
Klaus
.

AW: Danke für die Rückmeldung! owT.
05.02.2013 10:16:29
Thomas
Hallo Klaus,
sorry....eins bitte noch.
sSearch = "w" 'danach suchen
Wie heißt die Zeile wenn nach nicht leeren Zellen gesucht werden soll?
SSearch "" habe ich versucht, klappt so nicht.
Gruß
Thomas

Anzeige
suche nach <> ""
05.02.2013 10:22:51
Klaus
Hallo Thomas,
das ist ja dann eine ganz andere Aufgabe :-)
ändere mal die Zeile
If rBereich.Value = sSearch Then
in
If rBereich.Value "" Then
Grüße,
Klaus M.vdT.

AW: suche nach <> ""
05.02.2013 10:41:25
Thomas
Hallo Klaus,
ich glaube ich habe mich falsch ausgedrückt.
Ich meinte wenn statt "weiblich" irgendein anderer Text steht. Es soll also nicht geprüft werden ob genau weiblich in der Zelle steht sondern ob die Zeile leer ist oder nicht. Und wenn Sie nicht leer ist ein "x" setzen.
Gruß
Thomas

Anzeige
AW: suche nach <> ""
05.02.2013 10:46:49
Klaus
Hallo Thomas,
nach meinem Verständniss ist Und wenn Sie nicht leer ist die Entsprechung von If rBereich.Value "" Then
Müsste so funktionieren, oder du hast dich falsch ausgedrückt. Oder ich seh den Wald vor lauter Bäumen nicht.
Grüße,
Klaus M.vdT.

AW: suche nach <> ""
05.02.2013 11:01:35
Thomas
Hallo Klaus,
kein Und
einfach, wenn ein Text in der Zelle steht, soll ein "x" eingetragen werden. Unabhängig welcher Text in der Zelle steht.
Gruß
Thomas

Anzeige
AW: suche nach <> ""
05.02.2013 11:07:44
Klaus
ein Text in der Zelle steht, soll ein "x" eingetragen werden. Unabhängig welcher Text in der Zelle steht.
=
If rBereich.Value "" Then
Hallo Thomas,
reden wir komplett aneinander vorbei? wenn NICHT "" in der Zelle steht, dann steht ein Text in der Zelle. Hast du die Codeänderung ausprobiert? Bitte lad mal deine Datei hoch.
Grüße,
Klaus M.vdT.

Anzeige
AW: suche nach <> ""
05.02.2013 11:12:29
Thomas
If rBereich.Value "" Then
so bekomme ich aber in jeder Zelle ein "x", auch in wenn in der entsprechenden Zelle nichts steht.

AW: suche nach <> ""
05.02.2013 11:14:31
Klaus
Probier mal:
If not(isempty(rBereich.Value) Then
Grüße,
Klaus M.vdT.

AW: suche nach <> ""
05.02.2013 12:29:45
Thomas
Hallo Klaus,
so gehts nun.
Nochmals vielen Dank für deine Geduld und Mühe!
Gruß
Thomas

Anzeige
Danke für die Rückmeldung! owT.
05.02.2013 12:45:09
Klaus
.
;

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