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

SuFu in einer Tabelle

SuFu in einer Tabelle
11.07.2016 12:57:31
Nermin
Hallo Liebe Community!
Ich mal wieder! :D
Ich habe diesmal ein Problem, das mein Vorstellungsvermögen wie man es lösen könnte etwas übersteigt, daher bitte ich um eure Hilfe!
Mein code sieht folgender Maßen aus
Sub SuFu()
Dim o As Object, a, s As Double, z As Double
Set o = CreateObject("scripting.dictionary")
a = Worksheets("Tabelle2").Range("A1").CurrentRegion
For z = 2 To UBound(a) Step 45
For s = 2 To UBound(a, 2)
o(a(z, 1) & "|" & a(1, s)) = a(z, s)
Next
Next
z = Cells(42, 1).Value: s = Cells(43, 1).Value  ' hier halt die Werte von irgendwoher...
MsgBox "Der Wert für z = " & z & " / s = " & s & vbLf _
& " = " & o(z & "|" & s)
Cells(44, 1).Value = o(z & "|" & s)
z = 1
End Sub
Die Sache ist jetzt die: ich hätte gerne, dass ich sagen kann: ok du hast den richtigen wert gefunden, aber ich benötige (da mehrere werte für diese kombination in frage kommen) den wert der 5 Zeilen weiter unten ist. Kann man das in die Richtung mit offset usw. ansteuern?
Oder gibt es einen anderen Ansatz?
Vielen dank schon mal im Voraus!!!

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

Betreff
Datum
Anwender
Anzeige
AW: SuFu in einer Tabelle
11.07.2016 14:01:24
Michael
Hi,
es ist immer noch doof, das ohne Beispieldatei zu bearbeiten, siehe auch
https://www.herber.de/forum/messages/1503132.html
Mit

o(a(z, 1) & "|" & a(1, s)) = a(z, s)
holst Du Dir ja das "Item" (also den Wert) a(z,s) zum Schlüssel ("Key"), der sich aus den Zeilen- (a(z,1)) und Spaltenbeschriftungen (a(1,s)), garniert mit einem Trennzeichen, zusammensetzt.
Entweder...
Du nimmst die Zeile und Spalte in das "Item" mit auf, wiederum mit Trennzeichen, so á la (key ist immer der zusammengesetzte Schlüssel, ich will ihn nicht jedesmal ausschreiben):
o(key) = z & "|" & s & "|" & a(z, s)
An den Wert, der 5 Zeilen tiefer steht, komnmst Du dann via split:
'irgendwo am Anfang:
Dim sArr ' Variant, als Array
'und unten dann:
sArr=split(o(key),"|")
Msgbox "gesuchter Wert: " & a(sArr(0)+5,sArr(1))
'sArr(0) ist die Zeile, hier eben    +5, sArr(1) ist die Spalte
oder...
Du nimmst das Step 45 raus und liest ALLES ein, dann hast Du nämlich über die ZEILENbeschriftung Zugriff auf den dortigen Wert; also wenn in A5 "Meier" steht und in A10 "Mustermann", dann suchst Du eben nicht nach "Meier", sondern gleich nach "Mustermann", dann hast Du den passenden Wert.
Die obere Variante könnte ein bißchen schneller gehen, weil die Bearbeitung nur jeder 45. Zeile den Rechenaufwand zum Zusammensetzen des Items sicher ausgleicht...
Schöne Grüße,
Michael

Anzeige
AW: SuFu in einer Tabelle
11.07.2016 16:01:00
Nermin
Hey Michael,
vielen Dank für deine Mühe. Ich verstehe dass es ohne Beispiel doof ist. Deine Erklärung ist super habe es auch verstanden habe aber zwischenzeitlich eine andere lösung gefunden indem ich eine If Bedingung erstellt habe dass wenn der gesuchte wert gefunden wird dieser automatisch in eine gewünschte Formel kopiert und das Endergebnis dann in die gewünschte Zelle eingefügt wird :)
Aber super lieben vielen Dank, deine Erklärung und lösung ist echt top, da wäre ich niemals drauf gekommen, da ich noch nie richtig mit Arrays gearbeitet habe.
Guten start in die Woche wünsche ich!

Anzeige
gerne, vielen Dank für die Rückmeldung
11.07.2016 16:35:21
Michael
Hi Stefan,
Dir auch und Gruß zurück, es gibt viele Wege nach Rom...
Michael

AW: SuFu in einer Tabelle
11.07.2016 16:01:02
Nermin
Hey Michael,
vielen Dank für deine Mühe. Ich verstehe dass es ohne Beispiel doof ist. Deine Erklärung ist super habe es auch verstanden habe aber zwischenzeitlich eine andere lösung gefunden indem ich eine If Bedingung erstellt habe dass wenn der gesuchte wert gefunden wird dieser automatisch in eine gewünschte Formel kopiert und das Endergebnis dann in die gewünschte Zelle eingefügt wird :)
Aber super lieben vielen Dank, deine Erklärung und lösung ist echt top, da wäre ich niemals drauf gekommen, da ich noch nie richtig mit Arrays gearbeitet habe.
Guten start in die Woche wünsche ich!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige