2017-01-05 17 views
0

データの行に変数を乗算する最適な方法を見つけることを試みています。私はこのようなテーブルを持っている:Excel VBAは、それぞれ複数の行にそれぞれの数値を掛けます。

enter image description here

私はその期間中にアナリストが働いた日数を入力するように私に尋ねるスクリプトを持っています。

私が次にやりたいことは、上記のデータを作業日数で割ったものを、同じヘッダーと書式を持つ別のテーブルに記入することです。 I.スタッフの時間の下の最初の行を24時間54分55秒で割ったものが3日働いたとしましょう。

これは、Excelシートの機能とは対照的に、このコードにすべて含まれています。

私のような機能を使用してみました:

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

しかし、それは動作しませんでした。何か案は?

+0

PasteSpecialを参照してください。 –

+0

スコットの提案は、現在のコーディングで実装することができます。 –

+1

また、配列式でEvaluateを使うこともできます: '[G54:R54] = ActiveSheet.Evaluate(" INDEX(G54:R54/"&wd1&"、) ")' –

答えて

1

wd1とは何ですか?あなたはそれを宣言しましたか?そうでなければ、それはゼロであり、従って、ゼロによる除算エラーである。 それ以外のコードは&は私のコンピュータで動作します。

このような間違いを避けるには、明示的にオプションを使用してください。

編集:例えば380 * 1000/60を計算すると、すべてが整数であるとみなされるため、エラーが発生します。たぶん、それが関係することができ、過去に以下のCDBLに

+0

申し訳ありませんが、それは宣言されています。この場合、wd1は特定のアナリストの週あたりの総勤務日数に相当します。 – sbagnato

+1

@sbagnato:何が間違っていますか?範囲に文字列が含まれている可能性がありますか?おそらく範囲に.value2を追加すると助けになるでしょう...エラーメッセージは何ですか? – Pierre

+0

オーバーフローエラー6 – sbagnato

0

は、私が使用した(RNG)を使用してみてください(ダイナミックレンジ、同じ場所でのSheet2に貼り付け):助け

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 

うまくいけば!

関連する問題