2017-01-05 4 views
0

Ich versuche, den besten Weg zu finden, um eine Reihe von Daten mit einer Variablen zu multiplizieren. Ich habe eine Tabelle wie folgt aus:Excel VBA multiplizieren mehrere Zeilen jeweils durch ihre eigene Nummer

enter image description here

Ich habe ein Skript, das mir die Zahl der Tage eingeben, fragt der Analyst während dieser Zeit gearbeitet.

Was ich als nächstes geschehen möchte, ist eine andere Tabelle mit der gleichen Kopfzeile und Formatierung, die mit den obigen Daten geteilt durch die gearbeiteten Tage ausgefüllt wird. I.E. Sagen wir die erste Zeile unter Staff Time, 24:54:55 dividiert durch 3 Arbeitstage, also 8 Stunden und Wechsel.

Ich möchte, dass alle im Code sein, im Gegensatz zu Funktionen in der Excel-Tabelle.

Ich habe versucht, eine Funktion wie mit:

Dim rng As Range 
For Each rng In Range("G54:R54") 
    rng = (rng/wd1) 
Next rng 

Aber das hat nicht funktioniert. Irgendwelche Ideen?

+0

Schauen Sie in PasteSpecial division –

+0

Scott Vorschlag kann innerhalb Ihrer aktuellen Codierung implementiert werden. –

+1

Oder Sie können Evaluate mit einer Array-Formel verwenden: '[G54: R54] = ActiveSheet.Evaluate (" INDEX (G54: R54/"& wd1 &",) ") –

Antwort

1

Was ist wd1? Hast du es erklärt? Wenn nicht, ist es Null, daher ein Fehler durch Division durch Null. Sonst Code ist in Ordnung & funktioniert auf meinem Computer.

Verwenden Sie die Option explizit, um solche Fehler zu vermeiden.

Bearbeitet: Berechnung zum Beispiel 380 * 1000/60 verursacht einen Fehler, weil alle diese als ganze Zahlen angenommen werden. Vielleicht kann es in Beziehung gesetzt werden, versuchen CDbl (RNG) mit

+0

Entschuldigung, es wird erklärt. In diesem Fall entspricht wd1 einer bestimmten Analysten-Gesamtzahl der in dieser Woche gearbeiteten Tage. – sbagnato

+1

@sbagnato: Was ist dann falsch? Vielleicht enthält der Bereich eine Zeichenfolge? Vielleicht würde das Hinzufügen von .value2 zu den Bereichen auch helfen ... Was ist die Fehlermeldung? – Pierre

+0

Überlauffehler 6 – sbagnato

0

ich folgenden in der Vergangenheit verwendet habe (Dynamikbereich, Pasten zu Tabelle2 in der gleichen Position):

Sub Paste_Special_Divide() 

Dim LR As Long 
Dim LC As Long 
Dim MsgBoxy As Integer 
Dim Source As Range 
Dim Destination As Range 


LR = Cells(Sheets("Sheet1").Rows.Count, 1).End(xlUp).Row 

Set Source = Sheets("Sheet1").Range("A1:O" & LR) 
Set Destination = Sheets("Sheet2").Range("A1:O" & LR) 

MsgBoxy = Application.InputBox("Enter selection divisor:", Title:="Selection divisor", Default:=10, Type:=1) 

Source.Copy 
Destination.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide 
    Application.CutCopyMode = False 

End Sub 

Hoffentlich hilft!

Verwandte Themen