Anzeige
Archiv - Navigation
1600to1604
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

Varianten/Kombinationen/sinnvollste

Varianten/Kombinationen/sinnvollste
13.01.2018 06:49:10
Christoph
Hallo,
ich habe im Anhang eine Tabelle mit Namen und Werten. Einmal gibt es Werte die zu bestimmten Namen gehören und einmal gibt es Werte die gesucht werden. GIbt es ein Lösung als Makro die dann so aussieht das die sinnvollste Lösung(wenigsten Namen) aufgelistet wird wie in der Tabelle?
Bedingung ist, das alle Werte in der Lösung vorkommen müssen mit Ausgabe von Namen. Außerdem darf der Wert in der Tabelle nur noch einmal vorkommen. Das heißt gehört ein Wert zu 2 Namen wird dieser beim 2. Namen gelöscht.
Hoffe man versteht wie ich das meine. Sollte eigentlich aus der Tabelle ersichtlich sein.
https://www.herber.de/bbs/user/118914.xlsx
Gruss zahni

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Varianten/Kombinationen/sinnvollste
13.01.2018 12:06:58
Peter(silie)
Hallo,
unten ein wenig Code.
Du übergibst einach zwei String Arrays an die Prozedur.
Nach durchlauf, sind alle treffer in den Arrays gespeichert.
Die kannst du dann in die Tabelle schreiben.
Im Beispiel Code werden die Werte im Direktbereich angezeigt, vom VBA Editor in Excel.
Option Explicit
Sub Test()
Dim Werte() As String, Namen() As String
Dim i As Long
Search_Value "1,5", Werte, Namen
For i = LBound(Werte) To UBound(Werte)
Debug.Print Namen(i) & " has following values: " & Werte(i)
Next i
Erase Werte
Erase Namen
End Sub
Public Sub Search_Value(ByVal what_ As String, ByRef values_() As String, names_() As String)
Dim lRow As Long, i As Long, counter As Long
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Vorgaben")
With ws
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
Set rng = .Range(.Cells(2, 2), .Cells(lRow, 3))
For i = 1 To rng.Rows.Count
If InStr(1, CStr(rng(i, 2)), what_, vbTextCompare) >= 1 Then
ReDim Preserve values_(counter)
ReDim Preserve names_(counter)
values_(counter) = rng(i, 2)
names_(counter) = rng(i, 1)
counter = counter + 1
End If
Next i
End With
Set rng = Nothing
Set ws = Nothing
End Sub

Anzeige
AW: Varianten/Kombinationen/sinnvollste
13.01.2018 13:14:08
Christoph
Hallo,
danke schon mal für deine Hilfe.
Das funktioniert aber noch nicht so ganz wie es soll.
Habe jetzt zum Beispiel noch bei Vorgaben
Name Bernd
Wert 3 hinzugefügt
Gesucht 1,5,3.
Soll die Lösung sein:
Tom 1,5
Bernd 3
hast du dafür vielleicht auch noch einen Vorschlag?
Gruss Christoph
AW: Varianten/Kombinationen/sinnvollste
13.01.2018 14:25:06
onur
Und was passiert, wenn auch bei Fritz 1,5,11 steht - wird Tom oder Fritz genommen?
AW: Varianten/Kombinationen/sinnvollste
13.01.2018 14:57:35
Christoph
Hallo,
das ist egal.
Die Bedingung ist nur, das alle Werte enthalten sind und das so wenig wie möglich Namen verwendet werden.
Gruss Zahni

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige