Registriert seit: 19.06.2016
Version(en): 2013
Y aus X berechnen
1 - 6 - 11 - 16 - Y Werte
2 - 7 - 12 - 17 - X Werte
3 - 8 - 13 - 18
4 - 9 - 14 - 19
5 - 10 - 15 - 20
Ich suche eine VBA Lösung für die Berechnung einer Variablen Y in Abhängigkeit von X. Die Beziehung der beiden Variablen ist dabei
durch oben stehende Zahlentafel gegeben bzw. festgelegt. Wenn X den Wert 2,3,4 oder 5 hat ist Y = 1. Hat x den Wert 17,18, 19 oder 20 hat
y den Wert 16. Wie berechne ich mittels VBA die Variable Y aus einem aus dem obigen Zahlenfeld vorgegeben Wert X?
Danke für eure Hilfe.
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
08.02.2017, 11:56
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2017, 11:56 von lupo1.)
=KÜRZEN((A1-1)/5)*5+1
Y = Trim((X - 1) / 5) * 5 + 1 ungetestet (und ohne MIN und MAX)
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo
eine VBA-Variante
Code:
Sub test()
Dim rngBereich As Range
Dim c As Range
Dim x As Variant
Dim y As Variant
x = InputBox("X-Wert eingeben", "X-Wert")
If x = "" Then Exit Sub
Set rngBereich = Range("A2:D5")
Set c = rngBereich.Find(x, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
y = Cells(1, c.Column).Value
MsgBox "Y hat den Wert " & y
End If
End Sub
MfG Tom
Registriert seit: 19.06.2016
Version(en): 2013
@lupo1
danke für deine Antwort. Deine Lösung scheint aber leider nicht zu funktionieren.
Man kleines Kontrollprogramm wirft hier Werte aus, die nicht der Regel der Aufgabenstellung entsprechen.
Code:
Sub Y_aus_X()
Dim i, X, Y
X = Array(2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20)
For i = LBound(X) To UBound(X)
Y = Trim((X(i) - 1) / 5) * 5 + 1
Debug.Print "Y = " & Y & " X = " & X(i)
Next
End Sub
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
Code:
Y = (X(i) - 1) \ 5 + 1
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 19.06.2016
Version(en): 2013
@Hallo Edgar,
schöne einfache Formel, schein aber leider nicht zu funktionieren.
Mein kleines Testprogramm ergibt für deinen Lösungsansatz folgende Werte:
Y = 1 X = 2
Y = 1 X = 3
Y = 1 X = 4
Y = 1 X = 5
Y = 2 X = 7
Y = 2 X = 8
Y = 2 X = 9
Y = 2 X = 10
Y = 3 X = 12
Y = 3 X = 13
Y = 3 X = 14
Y = 3 X = 15
Y = 4 X = 17
Y = 4 X = 18
Y = 4 X = 19
Y = 4 X = 20
y hat aber die Werte 1 - 6 - 11 - 16
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
08.02.2017, 13:50
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2017, 13:50 von RPP63.)
Moin!
Gelöscht, war Blödsinn!
Gruß 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)
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
08.02.2017, 14:02
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2017, 14:02 von lupo1.)
Danke, lieber Frager, für Dein Testprogramm! Das macht es leichter!
Y = Int((X(i) - 1) / 5) * 5 + 1
Trim verwechselte ich in der Eile mit KÜRZEN, entspricht aber einem GLÄTTEN ohne Mehrfach-Leerzeichen-Eindampfung.
Boskos Ganzzahldivision ist schicker:
Y = ((X(i) - 1) \ 5) * 5 + 1
Registriert seit: 19.06.2016
Version(en): 2013
Vielen Dank Leute!
Ich war gestern nah an deiner Lösung von dir heute Lupo1. Hatte aber dann wohl irgendwie falsch geklammert.
Insgesamt kam ich zu einer komplizierteren Lösung, die ich hier nicht vorstelle.
Die Lösung von Edgar ist mir vollkommen neu.
Habe was gelernt. Danke!