Anzeige
Archiv - Navigation
624to628
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
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel in VBA verwenden, aber wie?

Formel in VBA verwenden, aber wie?
15.06.2005 09:11:38
Olli
Hi Leute,
ich stehe mal wieder auf dem Schlauch. Ich habe eine Formel, die ich aber nicht in der Tabelle benötige, sondern in einem VBA Code. Dort soll das Ergebnis der Formel in einer Variabelen gespeichert werden. Die Formel lautet
=INDEX(A73:A104;VERGLEICH(B108;A73:A104)+(ZÄHLENWENN(A73:A103;B108)=0))
Ich hoffe, jemand kann mir da behilflich sein
Danke Euch schon mla für die Hilfe,
Olli

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

Betreff
Datum
Anwender
Anzeige
AW: Formel in VBA verwenden, aber wie?
15.06.2005 09:17:25
sawadee00
vielleicht so?
=INDEX(A73:A104,MATCH(B108,A73:A104)+(COUNTIF(A73:A103,B108)=0))
AW: Formel in VBA verwenden, aber wie?
15.06.2005 09:32:23
bavariabob
Hi Olli
annahme: Du willst die Formel in Zelle D1 schreiben, dann
range("D1")FormulaLocal="=INDEX(A73:A104;VERGLEICH(B108;A73:A104)+(ZÄHLENWENN(A73:A103;B108)=0))"
Gruss aus münchen
Das war's leider nicht
15.06.2005 09:51:38
Olli
Hallo Ihr beiden,
danke Euch für Eure Antworten, aber leider habt Ihr nicht ganz verstanden was ich meine. Ich möchte in einem Makro das Ergebnis aus der Formel in eine Variable schreiben. Also nicht die Formel in irgend eine Zelle oder so automatisch schreiben bzw. eintragen. Die Formel
=INDEX(A73:A104;VERGLEICH(B108;A73:A104)+(ZÄHLENWENN(A73:A103;B108)=0))
würde ja, wenn sie sich in einer Zelle befinden würde ein Ergebnis liefern. Und das Ergebnis benötige ich, nur eben das die Fomel nicht in einer Zelle steht, sondern das soll in VBA errechnet werden und dann in eine Variable z.B. Variable Ergebnis gespeichert werden.
Habt Ihr verstanden was ich meine? Hoffentlich, ansonsten meldet Euch noch mal und ich werde versuchen mein Vorhaben erneut zu erklären.
Gruß,
Oliver
Anzeige
AW: Das war's leider nicht
15.06.2005 10:12:33
IngGi
Hallo Oliver,
einfach mal die Formel von Sawadee00 auf VBA umgesetzt (ungeprüft):

Sub x()
Dim dbl As Double
With Application.WorksheetFunction
dbl = .Index(Range("A73:A104"), .Match(Range("B108"), Range("A73:A104")) + _
(.CountIf(Range("A73:A103"), Range("B108")) = 0))
End With
End Sub

Gruß Ingolf
Im Prinzip ja, aber falsches Ergebnis, warum?
15.06.2005 10:45:05
Olli
Hi Ingolf,
danke Dir für Deine Antwort. Das von Dir geschriebene Makro funktioniert, im Prinzip. Aber ledier liefert mir die Formel in VBA ein anderes Ergebnis, als wenn ich die Formel in eine Zelle schreibe.
Mal zu Erklärung. Ich habe in Spalte A von Zeile 73 bis Zeile 104 Zahlen zustehen. das fängt an bei der Zahl 20 und erhöht sich pro Zeile um die Zahl 20, also habe ich dann in Zeile 73 die Zahl 20, in Zeile 74 die Zahl 40, in zeile 75 die Zahl 60 usw. Das geht bis zur Zeile 104 in der sich dann in Spalte A die Zahl 640 befindet. ich möchte nun in Zelle C108 eine Zahl eingeben, und mir soll dann angezeigt werden, wenn die Eingabe nicht genau einer Zahl in der Reihe entspricht, welches die nächst höhere wäre. Das funktioniert mit der Formel
=INDEX(A73:A104;VERGLEICH(B108;A73:A104)+(ZÄHLENWENN(A73:A103;B108)=0))
auch ganz gut. Nur benötige ich die Formel in VBA und auch das dazugehörige Ergebnis. Wenn ich nun den von Dir geschriebenen Code benutze erhalte ich eine andere Zahl als die Formel in der Zelle errechent.
Beispiel: Ich gebe in C105 die Zahl 510 ein. Diese Zahl gibt es nicht in der Reihe. ort gibt es nur die Zahlen 480, 500 und 520 usw. Nun müsste mir die Formel die Zahl 520 zurückgeben. Das macht auch die Formel, wenn sie in einer Zelle steht. Das ergebnis Deines MAkros ist dann aber die Zhal 480. Warum ist das so. Oder gibt es eventuell noch eine andere Möglichkeit die nächst höhere Zahl in VBA zu ermitteln?
Ich hoffe, jemand hat dazu eine passende Antwort für mich.
Danke noch mal für die Hilfe,
Oliver
Anzeige
AW: Im Prinzip ja, aber falsches Ergebnis, warum?
15.06.2005 11:19:47
IngGi
Hallo Oliver,
warum das in VBA nicht funktioniert - keine Ahnung. Daher folgender Alternativvorschlag. Es fehlt aber die komplette Fehlerbehandlung. Also Prüfung, ob Eingabe=Wert und Eingabe im gültigen Bereich...

Sub Wert_suchen()
Dim iArray(32) As Integer
Dim iEing As Integer, iAusg As Integer
Dim b As Byte
iEing = Val(InputBox("Bitte Wert eingeben"))
For b = 1 To 32
iArray(b) = b * 20
Next b
For b = 1 To 32
If iArray(b) > iEing Then iAusg = iArray(b)
Next b
'Gesuchter Wert ist in Variable iAusg
End Sub

Gruß Ingolf
Nach leichter Abänderung funktionierts jetzt!
15.06.2005 11:35:21
Olli
Hi Ingolf,
danke Dir noch mal für Deine Antwort. Das Makro hat zwar auch kein richtiges Ergebnis geliefert, aber es hat mir als Ansatz zum richtigen Lösungsweg für mich gereicht. Ich habe das amkro etwas abgeändert und nunfunktioniert es so, wie es sollte. Zumindest wird mir der richtige Wert in der MsgBox angezeigt und das war ja die Vorgabe.
Danke Dir noch mal,
Oliver
Anzeige
AW: Nach leichter Abänderung funktionierts jetzt!
15.06.2005 11:38:30
bavariabob
Hi Oliver,
noch ein Vorschlag:

Sub Obergrenze()
a = Application.WorksheetFunction.Ceiling(508, 20)
MsgBox a
End Sub

Gruss aus München

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige