2017-09-19 27 views
2

Excel-2010とExcel-2013で動作します。私は以下のようなことをしたい:Excelセルでの計算方法セルから出たときの計算

私がセルに入力する数字が何であれ、その数は60で割り切れなければならず、結果はTABを押すと同じセルに印刷されるべきです。このセルに戻ると、計算結果ではなく、入力された数値が表示されます。

Excelでのプログラミングについてよくわかりません。私は会社のセキュリティポリシーのためにサイトのほとんどを開くことができません。

誰でもこの手伝いをすることができますか?

+0

このルールが適用されるセルの範囲はありますか、このルールをシート内のすべてのセルに適用しますか? –

+0

そのセルの値が後続の計算で使用される場合は、どの値を使用する必要がありますか?入力値、または*を60 *値で割った値? –

+0

この練習の目的は何ですか?時間の計算を行う場合は、これを達成するためのより簡単な方法があるかもしれません。 –

答えて

1

このコードを使用してください。 Regular moduleではなく、Worksheet moduleにこのコードを貼り付ける必要があります。次に、Range("A1:A100")を数値を分割する範囲に調整してください。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim DivRg As Range 
Set DivRg = Range("A1:A100") 
Set DivRg = Application.Intersect(Target, DivRg) 

If DivRg Is Nothing Or Target.Cells.Count > 1 Then Exit Sub 

Application.EnableEvents = False 
Target = Target/60 
Target.Offset(0, 5).Value = 1 
Application.EnableEvents = True 

Set DivRg = Nothing 

End Sub 


Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim DivRg As Range 

Set DivRg = Range("A1:A100") 
Set DivRg = Application.Intersect(Target, DivRg) 

If DivRg Is Nothing Or Target.Cells.Count > 1 Then Exit Sub 

Application.EnableEvents = False 
If Target.Offset(0, 5).Value = 1 Then 
Target = Target * 60 
Target.Offset(0, 5).Value = 0 
End If 
Application.EnableEvents = True 

Set DivRg = Nothing 
End Sub 

あなたのタスクを達成するために、あなたは1つのヘルパーの列が必要になります(私は列Fを選んだ)いますが、任意の列を選択し、その列Target.Offset(0, 5).Valueに対処するためのコードのこの部分を変更することができます。たとえば、ヘルパー列を列Eにする場合は、このコードTarget.Offset(0, 4).Valueを使用します。サブコードの3つの部分すべてでこのコードを置き換えてください。

+1

これは60で入力されたものを分けるだけではありませんか? *このセルに戻ってくると、計算結果ではなく、入力された数字が表示されます。* –

+0

あなたは正しいです、私は彼の質問を誤解しました。私は自分の答えを調整した。頭をアップしてくれてありがとう。 –

+0

@Kresimir L.ご返信ありがとうございますが、私の要件にあなたのロジックを使用することができません。私はあなたの答えを受け入れたものとしてマークしました。私は、より多くの情報を使って、以下の場所にもう1つの投稿を作成しました。あなたはそれを見ていただけますか? https://stackoverflow.com/questions/46416787/excel-calculation-in-cell-for-certain-specified-cells –

関連する問題