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

Matrix mit 4 Variablen durchsuchen

Matrix mit 4 Variablen durchsuchen
10.05.2023 19:14:34
Kay Königsberger

Guten Abend liebes Forum,

ich habe nur ein wenig VBA-Kenntnisse und stehe vor einem für mich großem Problem.
In der Beispieldatei ist auf dem ersten Blatt "Matrix_Auswerten" eine Matrix zusehen. In Spalte A ein Suchwort was in 3 Teilen gespalten wird, damit in dem Blatt "Referenz" schrittweise gesucht werden kann. Gesucht wird jeweils in den Zeilen 4-6 für jede Variable einzeln. Wenn dann die richtige Spalte gefunden wurde, soll im Blatt "Referenz" das "A" gesucht werden und dann in dem Blatt "Matrix_Auswerten" in der für sich gefunden Spalte eingetragen werden.
Das aufsplitten, habe ich schonmal hingekriegt.

Wäre total toll von euch, wenn Ihr mir da ein paar Hilfestellungen geben könnt.
Ich bedanke mich schonmal im Voraus.

Viele Grüße
Kay

Die Beispiel Datei: https://www.herber.de/bbs/user/159132.xlsm

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix mit 4 Variablen durchsuchen
10.05.2023 22:09:14
onur
Keine Ahnung, was du meinst. Kein einziges deiner Suchwörter existiert auf Blatt "Referenz".


AW: Matrix mit 4 Variablen durchsuchen
10.05.2023 23:24:34
Pappawinni
hab auch mal rein geschaut ...irgend ein kryptisches Zeug ... Konzept ? .... ich versteh jedenfalls nur Bahnhof.


AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 00:21:15
Pappawinni
Das scheint irgendetwas mit SAP zu tun zu haben, Technischer Platz, so ungefähr das einzige in deinem Blatt was nicht kryptisch ist,
setzt sich wohl aus kleineren Einheiten zusammen, wobei mir nicht klar wird, was Plus- und Minuszeichen da darstellen.
Die sollen wohl zum Teil die Anzahl Zeichen repräsentieren, aber es muss auch einen Grund geben, dass es da verschiedene Füllzeichen gibt.
Vielleicht können bei + irgendwelche zusätzlichen Zeichen stehen, quasi ne Wildcard, aber raten hilft da nichts...
Das was da auf dem Blatt "Basis" steht ist noch am anschaulichsten, aber wohl letztlich das, was auf dem Blatt Referenz in anderer Weise wiedergegeben ist....

Es ist mir trotz gewisser Erkenntnisse aber nicht gelungen z.B. den Technischen Platz FFS----TKFD00359REP01 irgendwo einzuordnen....


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 06:34:47
Kay Königsberger
Guten Morgen,

vielen Dank für euer Engagement.
Ich habe mich mal wieder etwas komisch ausgedrückt, sorry dafür.
Jap du hast Recht Pappawinni, es geht hier um Technische Plätze aus SAP. Dieser wird unterschiedlich lang aufgeschlüsselt. Die ersten 7 Zeichen sind für die Matrix unrelevant. Zeichen 8 und 9 z.B. "TK" wird in Zeile 4 Blatt "Matrix_Auswerten" gesucht. Wird der gefunden sollen die Zeichen 10 bis 16 z.B. "FD00359" in der Zeile 5 Blatt "Matrix_Auswerten" gesucht werden. Ist der gefunden wird nach den restlichen Zeichen in Zeile 5 Blatt "Matrix_Auswerten" gesucht.
Ist auch das gefunden, soll in der gefunden Spalte nach dem "A" gesucht werden. Das "A" soll dann in Abhängigkeit von in Spalte A Blatt "Referenz" z.B. "Tklk" in dem Blatt "Matrix_Auswerten" auch unter "Tklk" eingetragen werden.

Ich hoffe dass ich mich nicht so komisch ausgedrückt habe. Ich weiß leider nicht, wie ich es verständlicher ausdrücken soll.

Viele Grüße

Kay Königsberger


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 09:55:07
Pappawinni
Es war mir inzwischen schon klar, dass die einzelnen Teile des Technischen Platzes Hierarchiestufen darstellen.
Quasi wie Verzeichnis - Unterverzeichnis - Unterunterverzeichnis
In der ersten Stufe gibt es wahrscheinlich wenig Varianz, wenn man nur die Technischen Plätze eines kleineren Unternehmensbereichs betrachtet,
also nicht im Root, anfängt, sondern in irgend einem Unterverzeichnis.

Was nach wie vor unklar ist, wo man denn zum Beispiel "FD00359" finden soll, wenn es in der Referenz so nicht zu finden ist.
Dazu hatte ich vermutet, dass die Zeichen + und - irgend eine Bedeutung haben.
Wenn in der Referenz zum Beispiel "FD+++++", bedeutet das dann, dass dort wo die "+" Zeichen sind eine Zahl stehen kann, oder auch Buchstaben?
Kurz, es ist unklar, wie man einen Treffer identifizieren soll. Was, wenn da in der Referenz "FD-----" stehen würde ?
Wenn du das nicht weißt, wir können auch nicht Hellsehen.

Es ist ungefähr so, als sagtest du, wir sollen eine Datei "FD00359" auf einem Datenträger suchen, die es dort aber so nicht gibt.
Wir können ja nicht wissen, dass du damit alle Dateien meinst, die mit FD anfangen und darauf Zahlen folgen, aber nicht solche, mit Buchstaben,
oder was weiß ich für wilde Kriterien für den Treffer gelten können.


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 11:52:11
Kay Königsberger
Ahhh sorry habe ich vergessen mitzuteilen. Blöde Betriebsblindheit.

+ bedeutet : Zeichen wird nicht berücksichtig,
- bedeutet : dient als Platzhalter und steht immer im Technischen Platz, werden also berücksichtigt.

Ich habe mal ein Beispiel als Bild gemacht. Vielleicht hilft das etwas. Das "A" zeigt dann welches Planzeichen ich für den Technischen Platz benötige.

Userbild

Vielen Dank und sorry nochmal für meine problematische Aussprache.


AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 11:54:46
onur
Jaaa, so winzige Bildchen sind sehr hilfreich bei Tabellenkalkulationsproblemen .....


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
11.05.2023 12:26:12
Kay Königsberger
Stimmt, sieht mickrig aus.

Ich habe in dem Tabellenblatt es farbig markiert. Im Blatt "Referenz" ist es die Spalte "BV", also was gefunden werden soll.
Im Blatt "Matrix_Auswerten" das Beispiel Ergebnis.

https://www.herber.de/bbs/user/159145.xlsm


AW: Matrix mit 4 Variablen durchsuchen
12.05.2023 00:24:21
Kay Königsberger
Habe es mit einigen If's und For Each hinbekommen.

Vielen Dank an pappawinni für die Info.
Danke auch an onur für die kontraproduktiven Aussagen. Nicht jeder kann halt mit komplexen kryptischen Matrixen umgehen.


AW: Matrix mit 4 Variablen durchsuchen
12.05.2023 05:32:20
onur
"Nicht jeder kann halt mit komplexen kryptischen Matrixen umgehen" ??? Du meinst wohl: "Nicht Jeder kann sein Problem so erklären, dass man nicht noch ETLICHE Male nachfragen und herumraten muss" ! Wie oft musstest du nochmal dich selbst korrigieren ??? Wie oft musste Pappawinni noch nachfragen ??? Wenn du 20 IQ-Punkte mehr hättest als du hast, hättest du immer noch mindestens 20 weniger als ich und wüsstest vielleicht sogar auch, dass es Matrizen heisst und nicht Matrixen. Also halt mal die Füsse still !


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
12.05.2023 10:48:10
Pappawinni
Also ich dachte, das hab ich gleich, fang an und dann schmeißt mir mein Makro raus, dass einige der gesuchten technischen Plätze nicht eindeutig sind.
Da müsste man dann auch wissen, was da dann passieren soll.....
Mir ist dann halt auch die Lust vergangen, wegen 20 Zeilen Code wieder und wieder nachfragen zu müssen.


AW: Matrix mit 4 Variablen durchsuchen
12.05.2023 11:04:19
Pappawinni
Ich hab mich im Übrigen gefragt, wozu man sich die Arbeit macht ein Blatt "Referenz" zu schaffen,
wenn man ebenso gut auch direkt auf dem Blatt "Basis" hätte arbeiten können, aber ich will ja nicht mehr alles verstehen....


Anzeige
AW: Matrix mit 4 Variablen durchsuchen
13.05.2023 23:30:56
Pappawinni
Bin nochmal über dieses Makro gestolpert, hab es jetzt einfach irgendwie fertig gemacht,
inwieweit das die Anforderungen erfüllt, kann ich nicht sagen, greift jedenfalls nicht auf das Blatt Referenz, sondern auf Basis...
und ist unkommentiert...


Option Explicit

Public Sub TP_auswerten()

Dim strTechnischerPlatz As String
Dim i As Long, lngLastRow  As Long, lngLine As Long
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Dim aSearch() As Variant
Dim rngHierarchy As Range
Dim rngRef As Range, rngTarget As Range, oCell As Range, oCol As Range, rngOutCol As Range
Dim rngFoundTP As Range
Dim strS As String

Set wks1 = ThisWorkbook.Worksheets("Matrix_Auswerten")
Set wks2 = ThisWorkbook.Worksheets("Basis")

Set rngHierarchy = wks2.Range("I3:DY7")
Set rngRef = wks2.Range("E11:E40")
Set rngTarget = wks1.Range("C4:AA4")

lngLastRow = wks1.Cells(Rows.Count, 1).End(xlUp).row

For lngLine = 6 To lngLastRow
    aSearch = Array()
    strTechnischerPlatz = wks1.Cells(lngLine, 1).Value
    
    Select Case Len(strTechnischerPlatz)
           Case 26
                aSearch = Array(Left(strTechnischerPlatz, 7), _
                                Mid(strTechnischerPlatz, 8, 2), _
                                Mid(strTechnischerPlatz, 10, 7), _
                                Mid(strTechnischerPlatz, 17, 5), _
                                Right(strTechnischerPlatz, 5))
           Case 21
                aSearch = Array(Left(strTechnischerPlatz, 7), _
                                Mid(strTechnischerPlatz, 8, 2), _
                                Mid(strTechnischerPlatz, 10, 7), _
                                Right(strTechnischerPlatz, 5))
           Case 16
                aSearch = Array(Left(strTechnischerPlatz, 7), _
                                Mid(strTechnischerPlatz, 8, 2), _
                                Right(strTechnischerPlatz, 7))
           Case 9
                aSearch = Array(Left(strTechnischerPlatz, 7), _
                                Right(strTechnischerPlatz, 2))
           Case 7
                aSearch = Array(strTechnischerPlatz)
           Case Else
                aSearch = Array()
                MsgBox "Zeile " & lngLine & vbCrLf & _
                       "fehlerhafter Technischer Platz"
    End Select
               
    Set rngFoundTP = HierarchicalSearch_SAP_TP(rngHierarchy, aSearch)
    
    rngTarget.Offset(lngLine - rngTarget.row).ClearContents
    
    If Not (rngFoundTP Is Nothing) Then
        For Each oCol In Range(rngFoundTP.Cells(1, 1), rngFoundTP.Cells(1, rngFoundTP.Columns.Count))
            i = 0
            For Each oCell In rngRef.Offset(0, oCol.Column - rngRef.Column)
                i = i + 1
                If oCell.Value = "A" Then
                    strS = rngRef(i, 1)
                    aSearch = Array(strS)
                    Set rngOutCol = HierarchicalSearch_SAP_TP(rngTarget, aSearch)
                    If Not (rngOutCol Is Nothing) Then
                        wks1.Cells(lngLine, rngOutCol.Column).Value = "A"
                    End If
                End If
            Next
        Next
    End If
Next

End Sub


Private Function HierarchicalSearch_SAP_TP(searchRange As Range, searchTerms() As Variant) As Range
    Dim rngResult As Range
    Dim oCell As Range
    Dim lCol As Long
    Dim IndexSearchTerm As Long
    Dim strLike As String
    Dim bolfound As Boolean
    Dim iA As Long, iB As Long
          
    Set rngResult = Range(searchRange.Cells(1, 1), searchRange.Cells(UBound(searchTerms) + 1, searchRange.Columns.Count))
    bolfound = False
       
    For IndexSearchTerm = 0 To UBound(searchTerms)
        iA = 0: iB = 0
               
        For lCol = 1 To rngResult.Columns.Count
            Set oCell = rngResult.Cells(IndexSearchTerm + 1, lCol)
            strLike = Replace(oCell.Value, "+", "?")
            bolfound = searchTerms(IndexSearchTerm) Like strLike
            iA = IIf(bolfound And (iA = 0), lCol, iA)
            If oCell.MergeCells Then lCol = lCol - 1 + oCell.MergeArea.Columns.Count
            iB = IIf(bolfound And (iA > 0), lCol, iB)
            If (Not bolfound) And (iA > 0) Then Exit For
         Next
         If (iA > 0) And (iB >= iA) Then
            Set rngResult = Range(rngResult.Cells(1, iA), rngResult.Cells(rngResult.Rows.Count, iB))
         Else
            Set rngResult = Nothing
            Exit For
         End If
     Next
     Set HierarchicalSearch_SAP_TP = rngResult
     
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige