HERBERS Excel-Forum - das Archiv

Thema: Spalte A = B/2

Spalte A = B/2
KonstMa
Einen schönen guten Montag,

ich bin ein neuer User hier, also liebe Grüße

Ich will die Spalte A abhängig von Spalte B machen,
und zwar folgendermaßen:

die Spalte A muss die Zahlenwerte aus der Spalte B wiedergeben,
aber zwei mal kleiner. Das heißt, wenn in B1 6 steht, muss in A1 3 stehen.
Wenn in B2 10 steht, muss in A1 5 stehen.

Also A = B/2

Ja, das Thema mag trivial klingen, aber ich bin ein motivierter VB-Anfänger
Youtube-Tutorials konnten mir bisher nicht helfen



AW: Spalte A = B/2
schauan
Hallöchen,

Wenn in B2 10 steht, muss in A1 5 stehen.

warum nicht in A2? In A1 steht doch schon 3 ...
AW: Spalte A = B/2
daniel
Hi

per VBA am einfachsten per Formel:
Range("A1:A" & Cells(Rows.count, 1).end(xlup).row).Fomular1C1 = "=RC2/2"


kreativ könnte man auch erst die Spalte B nach Spalte A kopieren, dann irgendwo eine 2 kopieren und die 2 als Divisor in die Spalte A einfügen:
Columns(2).Copy

Range("A1").PasteSpecial xlpastevalues
Cells(1, 3).value = 2
Cells(1, 3).copy
Columns(1).specialcells(xlcelltypeconstants, 1).PasteSpecial xlpastevalues, operation:=xldivide
Cells(1, 3).Value.Clearcontents


Gruß Daniel

AW: Spalte A = B/2
KonstMa
Hey Daniel vielen Dank für deine Lösung, die werde ich morgen ausprobieren.

Wichtig für mich ist, das ich den Prinzip verstehen wie man eine Abhängigkeit der Spalten voneinander mit VB programmiert.

Die mathematischen Formeln werden dann komplizierter sein als einfache Division durch zwei
AW: Spalte A = B/2
KonstMa
Hey Daniel,
die erste Methode sieht gut aus, da nur eine Zeile.
funktioniert bei mir aber leider nicht (Laufzeitfehler '438')

deine andere Methode funktioniert gut,
daher habe ich noch die Frage wie ich die zweiter Methode nutzen kann ohne ständiges F8-Klicken?
weil,
1) Die vorhandenen Werte müssen beim Öffnen der Tabelle schon da sein
2) wenn ich in Spalte B einen neuen Wert hinzufüge und darauf klicke, der entsprechende Wert in Tabelle A muss sofort "auftauchen"
AW: Spalte A = B/2
schauan
Hallöchen,

wenn in Spalte A noch nix steht, dann auch anhand der Einträge in B

Range("A1:A" & Cells(Rows.count, 2).end(xlup).row).Fomular1C1 = "=RC2/2"

wenn im Anschluss nur die Werte dort stehen sollen, dann mit

Range("A1:A" & Cells(Rows.count, 1).end(xlup).row).Value = Range("A1:A" & Cells(Rows.count, 1).end(xlup).row).Value


So etwas wie
Cells(Rows.count, 1).end(xlup).row)

funktioniert natürlich nur, wenn unter den Daten nicht noch irgendwas anderes in der Spalte steht. Aber das kannst Du auch mit der entsprechenden Tastenkombination prüfen.

Du kannst die Berechnung auch komplett in VBA durchführen. VBA kann zum einen einige Operationen direkt oder kann auf Arbeitsblattfunktionen zurückgreifen, z.B. Ergebnis=Worksheetfunction.Sum(...)

Du kannst die Berechnung zellweise in einer Schleife durchführen oder den kompletten Datenbereiche in ein Array übernehmen, selbiges verändern und zurück schreiben.
Im Prinzip
Sub test()

arrDaten = Range("B1:B3")
For iCnt = 1 To UBound(arrDaten)
arrDaten(iCnt, 1) = arrDaten(iCnt, 1) / 2
Next
Range("A1:A3") = arrDaten
End Sub

wobei es da zuweilen das Eine oder Andere zu beachten gilt.

...

AW: Spalte A = B/2
KonstMa
shauan Deine Formel werde ich auch testen. Habe jeden Tag ein biesschen Zeit
AW: Spalte A = B/2
KonstMa
Vielen Dank shauan für die Anmerkung,
das war ein schlimmer Fehler von mir
natürlich steht 5 dann in A2 und nicht in A1
AW: Spalte A = B/2
KonstMa
Die Frage ist noch nicht gelöst...
Wird es nicht geantwortet weil das Thema irgendwie als "gelöst" markiert ist?
AW: Spalte A = B/2
schauan
Hallöchen,
Also du hast das Prinzip doch richtig erkannt.
Also in A1 steht=B1/2 ...
AW: Spalte A = B/2
KonstMa
Aber wie setze ich das mit Visual Basic um?