Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6634 / 13646 ツリー ←次へ | 前へ→

【44112】Excelでの計算式設定 素人じゅうすけ 06/11/4(土) 15:51 質問[未読]
【44114】Re:Excelでの計算式設定 りん 06/11/4(土) 18:06 回答[未読]
【44121】Re:Excelでの計算式設定 yata 06/11/4(土) 22:43 発言[未読]
【44127】Re:Excelでの計算式設定 素人じゅうすけ 06/11/5(日) 9:53 質問[未読]
【44131】Re:Excelでの計算式設定 yata 06/11/5(日) 11:06 回答[未読]
【44133】Re:Excelでの計算式設定 素人じゅうすけ 06/11/5(日) 13:01 お礼[未読]
【44126】Re:Excelでの計算式設定 素人じゅうすけ 06/11/5(日) 9:42 質問[未読]
【44129】Re:Excelでの計算式設定 りん 06/11/5(日) 9:58 回答[未読]
【44135】Re:Excelでの計算式設定 素人じゅうすけ 06/11/5(日) 13:04 お礼[未読]

【44112】Excelでの計算式設定
質問  素人じゅうすけ E-MAIL  - 06/11/4(土) 15:51 -

引用なし
パスワード
   いまExcelに打ち込んだ表中のデータを使って計算式を設定させたいのです。分かる方がいましたら是非お教え下さい。

どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式1・2=指定した日付のなかに引かせあいたいものが二つ)、その出た二つの数字を使って割り算(計算式3)をして答えを出す。というものです。
例で言いますと、指定した日付が5行目と8行目だとします。8行目のF列の数字を5行目のF列の数字で引き、また8行目のH列の数字を5行目のH列の数字で引きます。そして、出た二つの数字を使って割り算(例:H列の答え÷F列の答え)をさせて答えを出す。

このような計算式を設定して、二つ日付をセレクトするだけで答えが出せるようにしたいのです。Excelだけで駄目であれば他に何を使用すればいいのかも教えてください。宜しくお願いいたします。

【44114】Re:Excelでの計算式設定
回答  りん E-MAIL  - 06/11/4(土) 18:06 -

引用なし
パスワード
   素人じゅうすけ さん、こんばんわ。

>どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式1・2=指定した日付のなかに引かせあいたいものが二つ)、その出た二つの数字を使って割り算(計算式3)をして答えを出す。というものです。

列番号は固定でいいのですか?
それとも、セレクトした列番号も有効なのでしょうか?
行を二つ選択した場合、選択順に計算するのか、行番号の小さい順に計算するのかどっちでしょうか?

>例で言いますと、指定した日付が5行目と8行目だとします。8行目のF列の数字を5行目のF列の数字で引き、また8行目のH列の数字を5行目のH列の数字で引きます。そして、出た二つの数字を使って割り算(例:H列の答え÷F列の答え)をさせて答えを出す。

例をそのままマクロにするとこんな感じです。
セルの選択には、InputBoxメソッドを使用しています。

Sub test()
  Dim r1 As Range, r2 As Range, rp1 As Long, rp2 As Long
  Dim dt1 As Variant, dt2 As Variant
  On Error Resume Next
   Set r1 = Application.InputBox("1つめをクリック", Type:=8)
   Set r2 = Application.InputBox("2つめをクリック", Type:=8)
  On Error GoTo 0
  If r1 Is Nothing Or r2 Is Nothing Then
   'エラー
   MsgBox "2か所選択してね", vbExclamation, "中断"
  Else
   If r1.Count + r2.Count = 2 Then
     'それぞれのセルの行番号取得
     rp1 = r1.Row: rp2 = r2.Row
     With Application.ActiveSheet
      dt1 = .Cells(rp2, 6).Value - .Cells(rp1, 6).Value
      dt2 = .Cells(rp2, 8).Value - .Cells(rp1, 8).Value
     End With
     '結果
     MsgBox dt2 / dt1, vbInformation, "H / F"
   Else
     'エラー
     MsgBox "R1 : " & r1.Address(False, False) & vbCrLf _
       & "R2 : " & r2.Address(False, False), _
       vbExclamation, "ともに単一セルのみ有効"
   End If
  End If
End Sub

【44121】Re:Excelでの計算式設定
発言  yata  - 06/11/4(土) 22:43 -

引用なし
パスワード
   素人じゅうすけ さん、今晩わ。
同じ日付が無かったらVLOOKUP関数を使って出来ます。
A列に日付が入っていてデータが20行あるとして、2つの指定する日付をセルJ1とJ2に入れて
=(VLOOKUP(J2,A1:H20,8,0)-VLOOKUP(J1,A1:H20,8,0))/(VLOOKUP(J2,A1:H20,6,0)-VLOOKUP(J1,A1:H20,6,0))
エラー対策をすると数式が長くなるので、「挿入」「名前」「定義」で
右半分と左半分の数式に名前を付けて(数式中では$を使って絶対参照にする)

=IF(OR(ISERROR(Hの差),ISERROR(Fの差)),"",IF(Fの差=0,"",Hの差/Fの差))
データ範囲に名前を付けておけば更に簡単。

【44126】Re:Excelでの計算式設定
質問  素人じゅうすけ E-MAIL  - 06/11/5(日) 9:42 -

引用なし
パスワード
   ▼りん さん:
お返事ありがとうございます。これで試してみます。

私事で大変恐縮なのですが、私はいま中国で働いていまして、現在中国のパソコンで仕事をしています。出来ればでよろしいので、Excelの画面の「どこをクリックしたらどんな画面がでて、そこでどのように設定をする」等の簡単な説明が欲しいです(分かりますか?)。今使っているのは、Excel2003です。システムは日本も中国のも変わりません。また、列番号は固定です。

度々で申し訳ないのですが、是非宜しくお願いいたします。
>素人じゅうすけ さん、こんばんわ。
>
>>どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式1・2=指定した日付のなかに引かせあいたいものが二つ)、その出た二つの数字を使って割り算(計算式3)をして答えを出す。というものです。
>
>列番号は固定でいいのですか?
>それとも、セレクトした列番号も有効なのでしょうか?
>行を二つ選択した場合、選択順に計算するのか、行番号の小さい順に計算するのかどっちでしょうか?
>
>>例で言いますと、指定した日付が5行目と8行目だとします。8行目のF列の数字を5行目のF列の数字で引き、また8行目のH列の数字を5行目のH列の数字で引きます。そして、出た二つの数字を使って割り算(例:H列の答え÷F列の答え)をさせて答えを出す。
>
>例をそのままマクロにするとこんな感じです。
>セルの選択には、InputBoxメソッドを使用しています。
>
>Sub test()
>  Dim r1 As Range, r2 As Range, rp1 As Long, rp2 As Long
>  Dim dt1 As Variant, dt2 As Variant
>  On Error Resume Next
>   Set r1 = Application.InputBox("1つめをクリック", Type:=8)
>   Set r2 = Application.InputBox("2つめをクリック", Type:=8)
>  On Error GoTo 0
>  If r1 Is Nothing Or r2 Is Nothing Then
>   'エラー
>   MsgBox "2か所選択してね", vbExclamation, "中断"
>  Else
>   If r1.Count + r2.Count = 2 Then
>     'それぞれのセルの行番号取得
>     rp1 = r1.Row: rp2 = r2.Row
>     With Application.ActiveSheet
>      dt1 = .Cells(rp2, 6).Value - .Cells(rp1, 6).Value
>      dt2 = .Cells(rp2, 8).Value - .Cells(rp1, 8).Value
>     End With
>     '結果
>     MsgBox dt2 / dt1, vbInformation, "H / F"
>   Else
>     'エラー
>     MsgBox "R1 : " & r1.Address(False, False) & vbCrLf _
>       & "R2 : " & r2.Address(False, False), _
>       vbExclamation, "ともに単一セルのみ有効"
>   End If
>  End If
>End Sub

【44127】Re:Excelでの計算式設定
質問  素人じゅうすけ E-MAIL  - 06/11/5(日) 9:53 -

引用なし
パスワード
   ▼yata さん:
お返事ありがとうございます。

ただし、私は現在中国で使用しているのは中国のパソコンです(パソコンソフトの機能は日本と同じ)。非常に恐縮なのですが、「なんの画面のどこをクリックしてどのような画面を出して、どのように設定していく」等の簡単な説明があるとすごく助かります。

わざわざご返事いただいたのに申し訳ございません。何卒、宜しくお願いいたします。
>素人じゅうすけ さん、今晩わ。
>同じ日付が無かったらVLOOKUP関数を使って出来ます。
>A列に日付が入っていてデータが20行あるとして、2つの指定する日付をセルJ1とJ2に入れて
>=(VLOOKUP(J2,A1:H20,8,0)-VLOOKUP(J1,A1:H20,8,0))/(VLOOKUP(J2,A1:H20,6,0)-VLOOKUP(J1,A1:H20,6,0))
>エラー対策をすると数式が長くなるので、「挿入」「名前」「定義」で
>右半分と左半分の数式に名前を付けて(数式中では$を使って絶対参照にする)
>
>=IF(OR(ISERROR(Hの差),ISERROR(Fの差)),"",IF(Fの差=0,"",Hの差/Fの差))
>データ範囲に名前を付けておけば更に簡単。

【44129】Re:Excelでの計算式設定
回答  りん E-MAIL  - 06/11/5(日) 9:58 -

引用なし
パスワード
   素人じゅうすけ さん、おはようございます。

>私事で大変恐縮なのですが、私はいま中国で働いていまして、現在中国のパソコンで仕事をしています。出来ればでよろしいので、Excelの画面の「どこをクリックしたらどんな画面がでて、そこでどのように設定をする」等の簡単な説明が欲しいです(分かりますか?)。今使っているのは、Excel2003です。システムは日本も中国のも変わりません。また、列番号は固定です。

1 前回のマクロを新規モジュールに記述します。
  新規モジュールは、Alt + F11 で VBEを表示し、挿入→標準モジュール です

2 VBEのウィンドウを閉じます。

3 Alt + F8でマクロの実行ダイアログが出ます。
  test というのを選択して実行してみてください。

testを選択するのは、前回のマクロをtestと名づけたからで、違う名まえをつける場合は、それを実行してください。

他に、ボタン等に登録し、クリックすることで実行する方法があります。
該当のシートの上に四角形等の図形またはコマンドボタンを置いて、マクロを登録します。
また、コマンドバー(メニューバー)にマクロのユーザー設定ボタンを追加し、マクロを登録します。


実行すると、"1つめをクリック"というタイトルのInputBoxが出るので、一つ目のセルをクリックしてください。
続いて"2つめをクリック"というタイトルのInputBoxが出るので、二つ目のセルをクリックしてください。

2回とも、単一セルを指定したときに、計算結果が表示されます。

どちらかで、キャンセルまたはドラッグで複数セルを指定した場合はそれぞれメッセージが出ます。

【44131】Re:Excelでの計算式設定
回答  yata  - 06/11/5(日) 11:06 -

引用なし
パスワード
   素人じゅうすけ さん 今日は
>ただし、私は現在中国で使用しているのは中国のパソコンです(パソコンソフトの機能は日本と同じ)。非常に恐縮なのですが、「なんの画面のどこをクリックしてどのような画面を出して、どのように設定していく」等の簡単な説明があるとすごく助かります。

先ず、データ範囲を選択します。次にメニュー「挿入(I)」「名前(N)」「定義(D)」で「名前の定義」ダイアログが出ます。
「名前(W)」に適当に名前(例えば Data )を入力し、下の「参照範囲(R)」に=Sheet1!$A$1:$H$・・
と出ているのを確認して「OK」。データ範囲に「Data」という名前が付けられます。
次に同じく「名前の定義」ダイアログを出して数式に名前を付けます。
「名前(W)」に適当に(例えば Hの差)名前を付けて、「参照範囲」に
=VLOOKUP($J$2,Data,8,0)-VLOOKUP($J$1,Data,8,0) 等にして「OK」
[8]はA列からH列は8列目、[0]は完全一致の意味です。
一致する日付が無い場合は#N/Aエラーになるので対策が必要です。

同じ日付が2つ以上あるときはVLOOKUP関数ではなくSUMIF関数で出来ます。
=SUMIF(Data,$J$2,$H:$H)-SUMIF(Data,$J$1,$H:$H) 等です。

後はこの名前を使って、前に述べたように表示させたいセルに数式を設定できます。

【44133】Re:Excelでの計算式設定
お礼  素人じゅうすけ E-MAIL  - 06/11/5(日) 13:01 -

引用なし
パスワード
   ▼yata さん:
ありがとうございました。明日、早速試してみます。
もし、また何か質問がありました時には、同じ名前で投稿致しますので、宜しくお願いします。
>素人じゅうすけ さん 今日は
>>ただし、私は現在中国で使用しているのは中国のパソコンです(パソコンソフトの機能は日本と同じ)。非常に恐縮なのですが、「なんの画面のどこをクリックしてどのような画面を出して、どのように設定していく」等の簡単な説明があるとすごく助かります。
>
>先ず、データ範囲を選択します。次にメニュー「挿入(I)」「名前(N)」「定義(D)」で「名前の定義」ダイアログが出ます。
>「名前(W)」に適当に名前(例えば Data )を入力し、下の「参照範囲(R)」に=Sheet1!$A$1:$H$・・
>と出ているのを確認して「OK」。データ範囲に「Data」という名前が付けられます。
>次に同じく「名前の定義」ダイアログを出して数式に名前を付けます。
>「名前(W)」に適当に(例えば Hの差)名前を付けて、「参照範囲」に
>=VLOOKUP($J$2,Data,8,0)-VLOOKUP($J$1,Data,8,0) 等にして「OK」
>[8]はA列からH列は8列目、[0]は完全一致の意味です。
>一致する日付が無い場合は#N/Aエラーになるので対策が必要です。
>
>同じ日付が2つ以上あるときはVLOOKUP関数ではなくSUMIF関数で出来ます。
>=SUMIF(Data,$J$2,$H:$H)-SUMIF(Data,$J$1,$H:$H) 等です。
>
>後はこの名前を使って、前に述べたように表示させたいセルに数式を設定できます。

【44135】Re:Excelでの計算式設定
お礼  素人じゅうすけ E-MAIL  - 06/11/5(日) 13:04 -

引用なし
パスワード
   ▼りん さん:
ありがとうございました。会社に出勤次第試してみます。
また何か質問があれば、同じ名前で投稿致しますので、見かけられたときには是非宜しくお願いいたします。
>素人じゅうすけ さん、おはようございます。
>
>>私事で大変恐縮なのですが、私はいま中国で働いていまして、現在中国のパソコンで仕事をしています。出来ればでよろしいので、Excelの画面の「どこをクリックしたらどんな画面がでて、そこでどのように設定をする」等の簡単な説明が欲しいです(分かりますか?)。今使っているのは、Excel2003です。システムは日本も中国のも変わりません。また、列番号は固定です。
>
>1 前回のマクロを新規モジュールに記述します。
>  新規モジュールは、Alt + F11 で VBEを表示し、挿入→標準モジュール です
>
>2 VBEのウィンドウを閉じます。
>
>3 Alt + F8でマクロの実行ダイアログが出ます。
>  test というのを選択して実行してみてください。
>
>testを選択するのは、前回のマクロをtestと名づけたからで、違う名まえをつける場合は、それを実行してください。
>
>他に、ボタン等に登録し、クリックすることで実行する方法があります。
>該当のシートの上に四角形等の図形またはコマンドボタンを置いて、マクロを登録します。
>また、コマンドバー(メニューバー)にマクロのユーザー設定ボタンを追加し、マクロを登録します。
>
>
>実行すると、"1つめをクリック"というタイトルのInputBoxが出るので、一つ目のセルをクリックしてください。
>続いて"2つめをクリック"というタイトルのInputBoxが出るので、二つ目のセルをクリックしてください。
>
>2回とも、単一セルを指定したときに、計算結果が表示されます。
>
>どちらかで、キャンセルまたはドラッグで複数セルを指定した場合はそれぞれメッセージが出ます。

6634 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free