Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Beat Berechnung unter Excel





Frage

Hallo zusammen, als Hobby DJ möchte ich mir gerne unter Excel (evtl. später als eigenes Programm mit VB) eine Umrechnungstabelle erstellen. Sie soll folgende Funktionen aufweisen. Unterteilung linker/rechter Player Jeweils folgende Felder: Original BPM Zahl des Songs Pitch-Fader Stellung Ist-BPM Zahl des Songs (errechnet sich ja einfach durch ((Gw/100)*Ps)+Gw Bsp. Orig. BPM 140 (Gw) Pitch +2% (Ps) ((140/100)*2)+140 = 142,8 BPM (Pw) Soweit sogut... Jetzt möchte ich aber eine gewisse Automatik einbringen. Entweder ich gebe die Daten wie oben beschrieben ein, sprich ich weiss die Original BPM's und die Pitch-Stellung und das Programm stellt mir im dritten Feld des jeweiligen Players die realen BPM's dar. Oder aber ich weiss die Original BPM's, gebe aber die realen (soll) BPM's im dritten Feld an und das Programm/die Tabelle geben mir die benötigte Pitchstellung an. Wie schreibe ich Funktionen so, dass entweder/oder berechnet wird... Weiss jemand rat ? Cheers Lolli

Antwort 1 von Flooooo

Da hilft dir am ehesten VBA:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim zeile As Integer
    Dim spalte As Integer
    Dim ergebnis As Double
    zeile = ActiveCell.Row
    spalte = ActiveCell.Column
    
    If spalte = 1 Then ergebnis = Cells(zeile, 3) / (Cells(zeile, 2) + 1)
    If spalte = 2 Then ergebnis = (Cells(zeile, 3) / Cells(zeile, 1)) - 1
    If spalte = 3 Then ergebnis = Cells(zeile, 1) * (Cells(zeile, 2) + 1)
    
    ActiveCell.Value = ergebnis
End Sub



So, du hast in SpalteA die alten BPM, in SpalteB den Pitch, in SpalteC die neuen BPM. Wenn du jetzt in ein Feld klickst, wird für diese Zeile der Wert dieses Feldes anhand der beiden anderen Felder berechnet.


Antwort 2 von Flooooo

Noch ne kleine verbesserung, sonst kann man nicht arbeiten:
Bau dir entweder einen Button, der die berechnung aus- und anschaltet, oder:

In Feld E1 muss "nein" stehen, wenn die Berechnung aus sein soll, dann:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
  If Not Cells(1, 5) = "nein" Then
  
    
    Dim zeile As Integer
    Dim spalte As Integer
    Dim ergebnis As Double
    zeile = ActiveCell.Row
    spalte = ActiveCell.Column
    
    If spalte = 1 Then ergebnis = Cells(zeile, 3) / (Cells(zeile, 2) + 1)
    If spalte = 2 Then ergebnis = (Cells(zeile, 3) / Cells(zeile, 1)) - 1
    If spalte = 3 Then ergebnis = Cells(zeile, 1) * (Cells(zeile, 2) + 1)
    
    ActiveCell.Value = ergebnis
    
  End If
  
End Sub


Antwort 3 von Lolli

WOW, schnelle Antwort, aber ehrlich gesagt verstehe ich das nicht so ganz. Bin in VB TOTAL unerfahren......
Ich habe eine neue Tabelle, öffne den VB-Editor und füge Deinen Code ein. Dann schliesse ich und kehre zurück zur Tabelle.
A1: 140
B1: 2 (steht nach eingabe von 140 zuerst -1)
C1: 420

Das ist doch irgendwie falsch....

Antwort 4 von Flooooo

das hat nix mit VBA zu tun: Formatiere die B-Spalte als Prozentwerte! (2% ist nicht 2, sondern 0,02)