Herbers Excel-Forum - das Archiv

Frage zu Wenn Dann Funktion

Bild

Betrifft: Frage zu Wenn Dann Funktion
von: Pascal

Geschrieben am: 27.07.2008 18:30:17

Hallo alle zusammen!
Ich habe folgenden Code versucht so zu gestalten, dass alle 5 folgenden Bedingungen bearbeitet werden:
"A" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 13) eingefügt werden
"B" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 14) eingefügt werden
"C" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 15) eingefügt werden
"D" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 16) eingefügt werden
"E" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 17) eingefügt werden
Wenn dort anstatt dieser Begriffe ("A", "B", usw.) in Spalte 1 "Symbol not found" gefunden wird, dann soll er in alle 5 Zellen "k.A." schreiben.

zelle = 7
spalte = 1
Set wksC = Worksheets("Cache")
Set wksI = Worksheets("Input")
varZ = Application.Match("A", wksC.Columns(2), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 13) = wksC.Cells(varZ, 1).Value
varZ = Application.Match("B", wksC.Columns(2), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 14) = wksC.Cells(varZ, 1).Value
varZ = Application.Match("C", wksC.Columns(2), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 15) = wksC.Cells(varZ, 1).Value
varZ = Application.Match("D", wksC.Columns(2), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 16) = wksC.Cells(varZ, 1).Value
varZ = Application.Match("E", wksC.Columns(2), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 17) = wksC.Cells(varZ, 1).Value
varZ = Application.Match("Symbol not found.", wksC.Columns(1), 0)
If IsNumeric(varZ) Then
wksI.Cells(zelle, spalte + 13) = "k.A."
wksI.Cells(zelle, spalte + 14) = "k.A."
wksI.Cells(zelle, spalte + 15) = "k.A."
wksI.Cells(zelle, spalte + 16) = "k.A."
wksI.Cells(zelle, spalte + 17) = "k.A."
End If
End If
End If
End If
End If
End If


Ich vermute, dass das irgendwie mit "else" gelöst werden muss, aber dann ergab sich bei mir immer ne Endlosschleife oder es wurden die anderen Bedingungen nicht mehr bearbeitet :(
Wäre nett wenn ihr mir weiterhelfen könntet!
Einen schönen Sonntagabend noch!
Gruß Pascal

Bild

Betrifft: AW: Frage zu Wenn Dann Funktion
von: Uduuh

Geschrieben am: 27.07.2008 19:50:30
Hallo,
so?

Sub tt()
Dim rngc As Range
Dim wksC As Worksheet, wksL As Worksheet
Dim Spalte As Long, Zeile As Long
Set wksC = Worksheets("Cache")
Set wksL = Worksheets("Input")
For Each rngc In wksC.Columns(1)
Select Case rngc
Case "A" To "E": wksL.Cells(Zeile, Asc(rngc) - Spalte - 50) = rnkc.Offset(0, -1)
Case Else
If rngc.Offset(0, -1) = "Symbol not found" Then
With wksL
.Range(.Cells(Zeile, Spalte + 12), .Cells(Zeile, Spalte + 17)) = "k.A"
End With
End If
End Select
Next rngc
End Sub


Gruß aus’m Pott
Udo

Bild

Betrifft: AW: Frage zu Wenn Dann Funktion
von: Pascal

Geschrieben am: 27.07.2008 22:35:10
Hallo Udo!
Ich glaube, dass ich meinen Fall zu undeutlich beschrieben habe, oder du ihn anders interpretiert hast.
Ich versuch es daher nochmal zu beschreiben:
Also es ist so, dass in Spalte 2 folgende Worte in unterschiedlichen Zeilen stehen:
"Apfel", "Birne", "Clementine", "Dattel" und "Erdbeer"
Wenn da nun "Apfel" in Zeile X steht dann soll die Zelle links daneben kopiert und in wksI.Cells(zelle, spalte + 13) eingefügt werden.
Dann soll anschließend überprüft werden, wo "Birne" in der Spalte 2 steht (z.B. in Zelle Y) und auch die Zelle links daneben soll kopiert und in wksI.Cells(zelle, spalte + 14) eingefügt werden.
Dasselbe Spiel mit "Clementine", "Dattel" und "Erdbeer" :)
Wenn nun nichts davon zutrifft dann steht da wahrscheinlich "Symbol not found" in Spalte 1, aber er kann auch generell einfach in alle 5 Zellen "k.A." schreiben. Es stehen nämlich immer alle 5 Obstsorten in Spalte 2 oder keines, nur die Zelle variiert halt...
Hoffe die Beschreibung war jetzt verständlicher... Oder muss ich die Begriffe dann nur noch irgendwo definieren? Nehme mal an, dass Case "Apfel" To "Erdbeer": nicht so funktionieren wird :)
Danke vorab für eure Hilfe!
Gruß Pascal

Bild

Betrifft: AW: Frage zu Wenn Dann Funktion
von: Rudi Maintaire

Geschrieben am: 28.07.2008 09:42:16
Hallo,
so?

Sub tt()
Dim rngC As Range
Dim wksC As Worksheet, wksL As Worksheet
Dim Spalte As Long, Zeile As Long
Set wksC = Worksheets("Cache")
Set wksL = Worksheets("Input")
Spalte = 1
Zeile = 7
For Each rngC In wksC.Columns(1).SpecialCells(xlCellTypeConstants)
Select Case rngC
Case "Apfel":      wksL.Cells(Zeile, Spalte + 13) = rngC.Offset(0, -1)
Case "Birne":      wksL.Cells(Zeile, Spalte + 14) = rngC.Offset(0, -1)
Case "Clementine": wksL.Cells(Zeile, Spalte + 15) = rngC.Offset(0, -1)
Case "Dattel":     wksL.Cells(Zeile, Spalte + 16) = rngC.Offset(0, -1)
Case "Erdbeere":   wksL.Cells(Zeile, Spalte + 17) = rngC.Offset(0, -1)
Case Else
With wksL
.Range(.Cells(Zeile, Spalte + 13), .Cells(Zeile, Spalte + 17)) = "k.A"
End With
End Select
Zeile = Zeile + 1
Next rngC
End Sub


Gruß
Rudi

Bild

Betrifft: AW: Frage zu Wenn Dann Funktion
von: Pascal
Geschrieben am: 28.07.2008 13:24:06
Hallo Rudi!
Vielen Dank, für deine Lösung! Klappt nun wie gewünscht :)
Einen Schönen Tag noch!!!

 Bild
Excel-Beispiele zum Thema "Frage zu Wenn Dann Funktion"
Funktion ANZAHL2 ohne ausgeblendete Spalten Mit der Indirekt-Funktion auf geschlossene Arbeitsmappe zugreifen
Benutzerdefinierte SVERWEIS-Funktion über mehrere Bereiche Alle Prozeduren und Funktionen auflisten
In Funktionskategorie einordnen Ausgabe einer benutzerdefinierten Funktion in Matrixformel
Benutzerdefinierte Funktion durch Code erstellen und löschen Ermittlung von Entfernungen über benutzerdefinierte Funktion
Handhabung von Arrays in benutzerdefininierten Funktionen Arbeitsmappen-Titel über benutzerdefinierte Funktion