Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Y aus X berechnen
#1
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.
Antworten Top
#2
=KÜRZEN((A1-1)/5)*5+1

Y = Trim((X - 1) / 5) * 5 + 1 ungetestet (und ohne MIN und MAX)
Antworten Top
#3
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
Antworten Top
#4
@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
Antworten Top
#5
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.
Antworten Top
#6
@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
Antworten Top
#7
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)
Antworten Top
#8
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
Antworten Top
#9
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!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste