Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worte per VBA suchen /zurückgeben

Worte per VBA suchen /zurückgeben
16.04.2013 13:49:31
Michael
Hallo zusammen,
ich habe folgendes "Problem"/ folgende Frage:
in einer Tabelle möchte ich in Spalte "B" eine Bewertung für einen Vorgang abgeben.
Z.B.: Zelle A2= Vorgang1; Bewertung in Zelle B2= gut
A3= Vorgang2; B3= sehr gut
A4= Vorgang3; B4= unbrauchbar
in Zelle B1 soll jetzt die "schlechteste" Bewertung "unbrauchbar" von der VBA-Funktion zurückgegeben werden.
Die Bereiche z.B. B2:B4 sind jedoch variabel, kann auch mal B365:B420 und B425:B431.... heißen und die Zielzelle B1 verhält sich entsprechend - also B364 und B424..... Es soll 3 Bewertungsmöglichkeiten geben. In der fertigen Tabelle wird es später mid. 15 solcher Bereiche auftauchen.
Kann man sowas über über eine VBA-Funktion realisieren, die man über die Zelle B1 aufruft?
Als wenn-dann-abfrage wird das ganze etwas unhandlich.
Vorab vielen Dank,
Gruß Micha

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worte per VBA suchen /zurückgeben
16.04.2013 14:07:19
Klaus
Hi,
per Formel:
=INDEX(A2:A4;MATCH("unbrauchbar";B2:B4;))
aber du hättest ja gerne eine VBA-Funktion. Dann so:
=Schlechteste(A2:A4;B2:B4)
Function Schlechteste(rVorgang, rBewertung)
Dim r As Range
Dim s1 As String
Dim s2 As String
Dim s3 As String
Dim sSuch As String
Dim lRow As Long
s1 = "sehr gut"
s2 = "gut"
s3 = "unbrauchbar"
sSuch = s3
If WorksheetFunction.CountIf(rBewertung, s3) = 0 Then
sSuch = s2
If WorksheetFunction.CountIf(rBewertung, s2) = 0 Then
sSuch = s1
End If
End If
lRow = WorksheetFunction.Match(sSuch, rBewertung, False)
Schlechteste = WorksheetFunction.Index(rVorgang, lRow)
End Function
Grüße,
Klaus M.vdT.

Anzeige
AW: Worte per VBA suchen /zurückgeben
16.04.2013 15:00:27
Michael
Hallo Klaus M.vdT,
vielen Dank funktioniert!
Besteht denn auch die Möglichkeit, die Punkte:
s1 = "sehr gut"
s2 = "gut"
s3 = "unbrauchbar"
aus einem Tabellenblatt auszulesen analog Daten,Datenüberprüfung,Liste, damit ich bei Änderung der Begrifflichkeit den Code nicht anpacken muss?
Gruß Micha

AW: Worte per VBA suchen /zurückgeben
16.04.2013 15:07:43
Klaus
Hallo Micha,
antwort auf alle deine Fragen: "ja".
Aber ich kenne ja deinen Tabellenaufbau nicht.
Beispiel, du machst eine Tabelle und nennst sie "Listen". Da schreibst du in A1: "sehr gut" usw. Dann so:
with sheets("Listen")
s1 = .range("A1").value
s2 = .range("A2").value
s3 = .range("A3").value
end with
Du könntest auch die Punkte der Liste direkt in der UDF angeben, dann so:
=Schlechteste(A2:A4;B2:B4,"sehr gut";"gut";"unbrauchbar")
Function Schlechteste(rVorgang as range, rBewertung as range, s1 as string, s2 as string, s3 as  _
string)
Dim r As Range
Dim sSuch As String
Dim lRow As Long
sSuch = s3
If WorksheetFunction.CountIf(rBewertung, s3) = 0 Then
sSuch = s2
If WorksheetFunction.CountIf(rBewertung, s2) = 0 Then
sSuch = s1
End If
End If
lRow = WorksheetFunction.Match(sSuch, rBewertung, False)
Schlechteste = WorksheetFunction.Index(rVorgang, lRow)
End Function

Oder oder oder ...
Wenn es spezieller werden soll, hilft vielleicht eine Musterdatei?
Grüße,
Klaus M.vdT.

Anzeige
AW: Worte per VBA suchen /zurückgeben
16.04.2013 15:48:29
Michael
Hallo Klaus M.vdT,
vielen Dank, ist umgesetzt!!!
Gruß Micha

Danke für die Rückmeldung! owT
16.04.2013 15:49:56
Klaus
.

AW: Worte per VBA suchen /zurückgeben
16.04.2013 14:10:35
GuentherH
Hallo Micha,
Lässt sich als Function mit einer Range-Übergabevariablen realisieren
Public Function Schlechteste(Bewertungsbereich as Range) as string
Aktuell = "Bestens"
for each Bewertung in Bewertungsbereich.cells
if Bewertung >schlechter als
Die ausgestaltung der Bewertung >schlechter als Gruß,
Günther

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige