Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
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

Zellenabfrage nach Zeichenreihenfolge und Weiter

Zellenabfrage nach Zeichenreihenfolge und Weiter
17.02.2017 15:16:34
Jan
Hallo
Ich habe sonst immer alles mit Formeln gemacht, aber jetzt wird es einfach zu unübersichtlich. Wie löse ich folgendes Problem in VBA. Ich habe etwa 30 Kombinationen die ich abfragen muss.
Userbild
Bisher habe ich dies so gelöst:
= WENN(ISTZAHL(SUCHEN("AA";A2));WENN(UND(B2="AA";C2="CC");VERKETTEN(E2;" ";F2;Fehler1); Startverschachtelung: WENN(ISTZAHL(SUCHEN("AB";A2));….. )
Auf gar keine fall möchte ich da 60 - 100 Wennabfragen in eine Reihe packen. Könnt Ihr mir eine Starthilfe geben?

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

Betreff
Datum
Anwender
Anzeige
Zellenabfrage nach Zeichenreihenfolge und Weiter
17.02.2017 16:00:58
Michael
Hi Jan,
die Geschichte ist mir nicht ganz logisch: A3 trifft ja sowohl AA als auch AB. Geht es immer und die 2. bis 4. Position im String des Argument1?
Vielleicht wäre eine Datei mit ein paar mehr bzw. "echteren" Spieldaten und einer Auflistung Deiner 30 Kriterien ganz sinnvoll.
Was passiert denn bei "sonst"? Ausgabe = ""?
Gruß,
M.
AW: Zellenabfrage nach Zeichenreihenfolge und Weiter
20.02.2017 10:22:56
Jan
Ich hoffe so wird das Problem klarer. Wenn keine Kombination der Argumente zutrifft soll die jeweilige Ergebniszelle nicht "angefasst" werden.
https://www.herber.de/bbs/user/111592.xlsx
Userbild
Anzeige
Zellenabfrage nach Zeichenreihenfolge und Weiter
20.02.2017 16:21:01
Michael
Hi Jan,
teste mal: https://www.herber.de/bbs/user/111607.xlsm
Das Makro ...
Option Explicit
Sub vglWerte()
Dim Strg, Such     ' ohne Angabe = as Variant, als Arrays
Dim arr(1 To 3)    ' 1: Folie A, 2: Folie B, 3: Ausgabespalte
Dim i&, j&, k&, k2&, t& ' & = as long
Dim s$             ' $ = as string
Dim o As Object
Dim t0 As Single
t0 = Timer
Strg = Range("Q4:U6") ' Tabellenbereich zur Steuerung des Makros
For i = 1 To 3
With Sheets(Strg(i, 1))
If i = 3 Then
Strg(i, 5) = Strg(1, 5)
Else
Strg(i, 5) = .Range(Strg(i, 2) & .Rows.Count).End(xlUp).Row
End If
arr(i) = .Range(Strg(i, 2) & Strg(i, 3)). _
Resize(Strg(i, 5) - Strg(i, 3) + 1, Strg(i, 4)).Value
End With
Next
Set o = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr(2))
s = arr(2)(i, 2) & "|" & arr(2)(i, 3)
o(s) = o(s) & "|" & i
' die Zeile, die gerade bearbeitet wird, d.h.
' - in der das weitere Suchkriterium und
' - das Ergebnis stehen
Next
k = i - 1
k2 = o.Count
'Stop
For i = 1 To UBound(arr(1))
arr(3)(i, 1) = ""
s = arr(1)(i, 2) & "|" & arr(1)(i, 3)
If o.exists(s) Then
Such = Split(o(s), "|")
For j = 1 To UBound(Such)
t = InStr(1, arr(1)(i, 1), arr(2)(Such(j), 1), vbTextCompare)
If t > 0 Then
arr(3)(i, 1) = arr(2)(Such(j), 4) & " " & arr(2)(Such(j), 5)
Exit For
End If
Next
End If
Next
Sheets(Strg(3, 1)).Range(Strg(3, 2) & Strg(3, 3)).Resize(UBound(arr(3))) = arr(3)
Set o = Nothing
MsgBox "Erledigt in " & (Timer - t0) * 1000 & " ms." & vbLf & _
"übrigens sind in Folie B " & k & " Werte vorhanden," & vbLf & _
"im Dictionary sind es " & k2
End Sub

... verwendet Eingaben aus dem Tabellenbereich zur Steuerung: Strg = Range("Q4:U6")
Damit ist das Ding sehr variabel, d.h. Du kannst hier u.a. Blattnamen hinterlegen, in denen die einzelnen "Folien" stehen.
Schöne Grüße,
Michael
Anzeige
AW: Zellenabfrage nach Zeichenreihenfolge und Weiter
22.02.2017 09:41:45
Jan
So nochmals vielen Dank, dass funktioniert super.
Ich bekomme zwar das Makro nicht in meiner Folie zum laufen (Konflickt mit anderen Makros bzw. Tabellenaufbau). Aber ich kopiere das händich jetzt einfach rüber.
Danke und viele Grüße
Jan
freut mich, danke für die Rückmeldung,
23.02.2017 19:04:07
Michael
Jan,
und schöne Grüße zurück,
Michael

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige