Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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
Excel-Formel in VBA
21.03.2015 20:40:29
JM
Guten Abend zusammen,
Ich versuche schon seit einiger Zeit folgende Excel-Formel, welche auch im Tabellenblatt super funktioniert über VBA laufen zu lassen:
=VERGLEICH(MIN(INDEX(B:B;$I$54;1):INDEX(B:B;$I$60;1));B747:B1661;0)+$I$54-1
Leider bekomme ich dabei immer wieder Fehlermeldungen, ich vermute, die Funktionen Index und Vergleichen heißen in VBA anders und sind so nicht existent in VBA...
vllt wisst ihr was :-)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Formel in VBA
22.03.2015 08:19:09
Matze
Hallo JM,
du hast doch bestimmt schon mit dem Makrorecorder gearbeitet, zeichne es doch mal auf, dann wirst du sehen was dort passiert. Ansonsten kapiere ich nicht wie du eine Fehlermeldung erhältst, ich sehe noch nicht mal dein Versuch.
Vergleich = Match
Du kannst dich über FormulaLocal mal schlau machen.
Viel Spaß beim lesen und lernen
Gruß Matze

AW: Excel-Formel in VBA
22.03.2015 11:56:07
JM
Hallo Matze,
ich habe versucht diese Formel über den Befehl ?Range("J67").Formula (Zelle J67 ist die Zelle wo oben genannte Formel drin steht) im Direktbereich der VBA Umgebung als VBA-Code auszuwerten und bekam folgende Formel:
=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),B747:B1661,0)+$I$54-1
Wenn ich aber folgende Prozedur durchlaufen lasse, dann bekomme ich einen Fehler.
Liegt wahrscheinlich mit unter daran, dass vba die excel formeln index und vergleich nicht kennt...aber ich hätte gedacht, dass vba es halt auf die eigene art und weise genauso hinbekommt.
Public Function Startmakro() As String
Call Bereichskorrektur
Startmakro = "Gestartet."
End Function
Sub Bereichskorrektur()
Dim Var1 As Integer
Dim Var2 As Integer
Var1 = Range("I54")
Var2 = Range("I60")
Range("J79").Formula =MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),B747:B1661,0)+$I$54-1
Range("J77").Formula = Var1
Range("J78").Formula = Var2
End Sub Der Code macht bisher wenig Sinn, jedoch möchte ich gerne Versuchen in die 3. letzte Zeile (die lange)die beiden Variablen als Suchmatrixbereich zu definieren, um ihn dynamisch gestalten zu können.
Ich hoffe Ihr könnt mir folgen.
Vielen Dank schon einmal für Eure Mühe.
Gruß JM

Anzeige
AW:Formel in VBA
22.03.2015 12:29:06
hary
Moin
.Formula = "=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),B747:B1661,0)+$I$54-1"

gruss hary

AW: AW:Formel in VBA
22.03.2015 13:27:44
JM
Hallo hary,
ich bin begeistert, es funktioniert :-) vielen Dank für die Hilfestellung!
Der letzte Schritt wäre an der Stelle B747:B1661 anstelle der Zahlen 747 und 1661 die beiden Variablen Var1 und Var2 einzusetzen.
Mein Vorschlag wäre folgender gewesen:
Range("J79").Formula = "=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),B&Var1: B&Var2,0)+$I$54-1"
Mein Vorschlag funktioniert leider nicht.
Anscheinend müssen "B" und "Var1" bzw. "B" und "Var2" anders verknüpft werden. Und ja ich habe vorher gegoogelt, nur leider nichts passendes gefunden :/
Gruß JM

Anzeige
AW: AW:Formel in VBA
22.03.2015 13:49:09
Matze
Hallo JM,
vergebe dem Bereich B747:J1661 einen Namen zb Suchmatrix
.Formula = "=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),Suchmatrix,0)+$I$54-1"
Änderst du dann im Blatt den Bereich zB durch eine Zeilenerweiterung oder Spaltenerweiterung
wird dies automatisch angepasst.
Gruß Matze

AW: AW:Formel in VBA
22.03.2015 14:07:14
JM
Hallo Matze,
das wäre eine gute Idee, nur müsste ich dann wissen, ob ich Suchmatrix als Variant oder was anderes vorher definieren müsste.
Weiterhin besteht ja das Problem, dass ich dann bei der Definition für Suchmatrix die Verkettung von B und Var1 bzw. B und Var2 hinterlegen müsste.
Damit bin ich wieder beim selben Problem.
Mit folgender Formel für die Suchmatrix bekomme ich folgenden Laufzeitfehler '13':
Suchmatrix = Range("B2476", "B3952")
Das ist mein veränderter code:
Sub Bereichskorrektur()
Dim Var1 As Integer
Dim Var2 As Integer
Dim Suchmatrix As Integer
Var1 = Range("I54")
Var2 = Range("I60")
Suchmatrix = "B2476: B3952"
Range("J79").Formula = "=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),Suchmatrix,0)+$I$54- _
1"
Range("J77").Formula = "B" & Var1
Range("J78").Formula = Var2
End Sub
Gruß JM

Anzeige
AW: AW:Variable in Formel
22.03.2015 13:58:20
hary
Moin
Dann musst du den Formelstring unterbrechen und die Variablen einfuegen.
"=MATCH(MIN(INDEX(B:B,$I$54,1):INDEX(B:B,$I$60,1)),B" & Var1 & ": B" & Var2 & ",0)+$I$54-1"

Besser wie matze beschrieb. Sonst musst du immer im Code anpassen.
gruss hary

AW: AW:Variable in Formel
22.03.2015 14:10:10
JM
Hallo hary,
das ist doch super! genauso hab ich es mir vorgestellt.
Es gibt kein Problem mit einer Anpassung, da die Variablen in jedem Tabellenblatt neu hinterlegt sind und es automatisiert ablaufen kann.
Perfekt.
danke

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige