Ich habe folgendes Problem: ich möchte Excel einen Prüfvorgang durchführen lassen, der folgende Formel auf Wahr/Unwahr prüfen soll.
Formel kurz erklärt:
x, y und n sind vordefinierte Zahlen. Excel soll mir nun sagen, ob aus dem n-ten Produkt von (a*b), wobei a und b Zahlen zwischen 0 und 20 sein sollten, x*y rauskommen kann.
Kurzes Beispiel:
x=5
y=8
x*y=40
n=4
40=1*5+2*10+5*1+4*5 --> True
Es soll also geprüft werden, ob eine Möglichkeit besteht, ob die Summe aus n a*b-Produkten x*y ergeben kann.
Dabei können a und b verschiedene Werte annehmen innerhalb der einzelnen Produkte, jedoch keine Werte größer 20.
For j = 1 To 20
For jj = 1 To 20
For jjj = 1 To 20
For jjjj = 1 To 20
If j + jj + jjj + jjjj = a * b Then c00 = c00 & Join(Array(vbLf, j, jj, jjj, jjjj))
Next
Next
Next
Next
1. Das Programm variiert zwei Werte (awert und bwert) ganzzahlig über die vorgegebenen Grenzen.
Für jede Variation, für die die definierte Formel den Wert 0 hat, werden die Werte der Variation ausgegeben.
2. Die Formel ist frei definierbar.
Code:
Private Sub cbTuwat_Click()
Dim lngAmin As Long
Dim lngAmax As Long
Dim lngBmin As Long
Dim lngBmax As Long
Dim lngOff As Long
Dim lngAwert As Long
Dim lngBwert As Long
Dim rngFormel As Range
Dim rngAwert As Range
Dim rngBwert As Range
Dim rngAusgabe As Range
lngAmin = ThisWorkbook.Names("amin").RefersToRange.Value
lngAmax = ThisWorkbook.Names("amax").RefersToRange.Value
lngBmin = ThisWorkbook.Names("bmin").RefersToRange.Value
lngBmax = ThisWorkbook.Names("bmax").RefersToRange.Value
Set rngAwert = ThisWorkbook.Names("awert").RefersToRange
Set rngBwert = ThisWorkbook.Names("bwert").RefersToRange
Set rngFormel = ThisWorkbook.Names("Formel").RefersToRange
Set rngAusgabe = ThisWorkbook.Names("Ausgabe").RefersToRange
rngAusgabe.CurrentRegion = ""
lngOff = 0
For lngAwert = lngAmin To lngAmax
rngAwert.Value = lngAwert
For lngBwert = lngBmin To lngBmax
rngBwert.Value = lngBwert
If rngFormel.Value = 0 Then
rngAusgabe.Offset(lngOff, 0) = lngAwert
rngAusgabe.Offset(lngOff, 1) = lngBwert
lngOff = lngOff + 1
End If
Next lngBwert
Next lngAwert
If lngOff = 0 Then MsgBox "Keine Lösung gefunden."
End Sub
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
06.06.2018, 18:13 (Dieser Beitrag wurde zuletzt bearbeitet: 06.06.2018, 18:13 von RPP63.)
Moin Helmut und sorry vorab für das off topic!
Verona Poth nannte ihren Sohn San Diego, weil er dort gezeugt wurde.
Gabi Köster nahm das in einem Sketch zum Anlass, nicht allem und allen "sinnvolle" Namen geben zu müssen.
Grob nach diesem Script:
"Hömma, Rückbank von Papas Auto, im Wald, kommsse ma essen?"
Conclusio:
Nicht immer ist ein sprechender Name sinnvoll … ;)
[/off topic]
Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)