Excel VBA質問箱 IV

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

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


1028 / 13644 ツリー ←次へ | 前へ→

【76718】日にち まさ 15/3/4(水) 13:16 質問[未読]
【76719】Re:日にち 独覚 15/3/4(水) 13:29 発言[未読]
【76720】Re:日にち [名前なし] 15/3/4(水) 14:02 回答[未読]
【76721】Re:日にち 独覚 15/3/4(水) 14:24 発言[未読]
【76722】Re:日にち [名前なし] 15/3/4(水) 17:34 回答[未読]
【76737】Re:日にち 独覚 15/3/6(金) 16:28 回答[未読]
【76738】Re:日にち まさ 15/3/6(金) 18:46 お礼[未読]
【76739】Re:日にち まさ 15/3/6(金) 19:10 お礼[未読]

【76718】日にち
質問  まさ  - 15/3/4(水) 13:16 -

引用なし
パスワード
   質問します。どなたかお分かりなら、教えてください。

列Aに「日にち」が入力されている。
列Bに「別の日にち」が入力されている。
列CにAとBの日にちの遅い方に「+60日」して表示したい。

例)
A1、3/1日 B1、3/4日と入力されている。
 C1に(この場合B1の方が遅い日なので)+60日して5/4日と表示させたい。


A2、4/10日 B2、4/3日と入力されている。
 C2に(この場合A2の方が遅い日なので)+60日して6/10日と表示させたい。

【76719】Re:日にち
発言  独覚  - 15/3/4(水) 13:29 -

引用なし
パスワード
   ▼まさ さん:
ワークシート上の式でもできますがマクロのほうがいいのでしょうか?

またマクロの場合、A列、B列に入力があった時にC列に表示させるのか、あらかじめA列、
B列に値が入っていてマクロを実行するとC列に表示するのとどちらがいいでしょうか?

【76720】Re:日にち
回答  [名前なし]  - 15/3/4(水) 14:02 -

引用なし
パスワード
   ▼独覚 さん:
独覚さん、早速のご連絡ありがとうございます。
基本的に予めA、B両列2行目〜数百行めまで日にちの値が入っている状態です。
イメージとして、AかB列、(同じ行)の遅い方から60日後がデッドラインだという注意喚起をする資料にしたいのです。その要件ですと、マクロの方が使い勝手がよいでしょうか?
マサさん:
>ワークシート上の式でもできますがマクロのほうがいいのでしょうか?
>
>またマクロの場合、A列、B列に入力があった時にC列に表示させるのか、あらかじめA列、
>B列に値が入っていてマクロを実行するとC列に表示するのとどちらがいいでしょうか?

【76721】Re:日にち
発言  独覚  - 15/3/4(水) 14:24 -

引用なし
パスワード
   ▼まさ さん:
結果チェック時に疑問が出てきました。

4/10+60→6/10
なのですか?

4/10+60→6/9
ではなく?

もしかして60日後ではなく2ヵ月後ということですか?

【76722】Re:日にち
回答  [名前なし]  - 15/3/4(水) 17:34 -

引用なし
パスワード
   独覚さん
すみません。4/10→6/9でした。60日後は間違いありません。

▼独覚 さん:
>▼まさ さん:
>結果チェック時に疑問が出てきました。
>
>4/10+60→6/10
>なのですか?
>
>4/10+60→6/9
>ではなく?
>
>もしかして60日後ではなく2ヵ月後ということですか?

【76737】Re:日にち
回答  独覚  - 15/3/6(金) 16:28 -

引用なし
パスワード
   標準モジュールに


Sub tst()
  Dim LOOP_CNT  As Long
  
  LOOP_CNT = 1
  
  Do Until Cells(LOOP_CNT, "A") = "" And Cells(LOOP_CNT, "B") = ""
    Cells(LOOP_CNT, "C") = WorksheetFunction.Max(Cells(LOOP_CNT, "A"), Cells(LOOP_CNT, "B")) + 60
    LOOP_CNT = LOOP_CNT + 1
  Loop
  
End Sub
で、どうでしょうか?

プロシージャ名は「tst」でなくわかりやすいもので結構です。
プログラムの流れとしては1行目から見て行ってA列・B列両方が空白の行まで見て行きます。

なお、C列はあらかじめ表示形式を「日付」にしておいてください。

【76738】Re:日にち
お礼  まさ  - 15/3/6(金) 18:46 -

引用なし
パスワード
   独覚 さん:

お忙しい所、ありがとうございます。
月曜日試して、結果をご連絡いたします。
取り急ぎ、ありがとうございました。

▼独覚 さん:
>標準モジュールに
>
>
>Sub tst()
>  Dim LOOP_CNT  As Long
>  
>   LOOP_CNT = 1
>  
>   Do Until Cells(LOOP_CNT, "A") = "" And Cells(LOOP_CNT, "B") = ""
>    Cells(LOOP_CNT, "C") = WorksheetFunction.Max(Cells(LOOP_CNT, "A"), Cells(LOOP_CNT, "B")) + 60
>    LOOP_CNT = LOOP_CNT + 1
>  Loop
>  
>End Sub
>で、どうでしょうか?
>
>プロシージャ名は「tst」でなくわかりやすいもので結構です。
>プログラムの流れとしては1行目から見て行ってA列・B列両方が空白の行まで見て行きます。
>
>なお、C列はあらかじめ表示形式を「日付」にしておいてください。

【76739】Re:日にち
お礼  まさ  - 15/3/6(金) 19:10 -

引用なし
パスワード
   独覚さん:

今試したところ、イメージ通りに機能しました。
大変助かりました。ありがとうございました。
>独覚 さん:
>
>お忙しい所、ありがとうございます。
>月曜日試して、結果をご連絡いたします。
>取り急ぎ、ありがとうございました。
>
>▼独覚 さん:
>>標準モジュールに
>>
>>
>>Sub tst()
>>  Dim LOOP_CNT  As Long
>>  
>>   LOOP_CNT = 1
>>  
>>   Do Until Cells(LOOP_CNT, "A") = "" And Cells(LOOP_CNT, "B") = ""
>>    Cells(LOOP_CNT, "C") = WorksheetFunction.Max(Cells(LOOP_CNT, "A"), Cells(LOOP_CNT, "B")) + 60
>>    LOOP_CNT = LOOP_CNT + 1
>>  Loop
>>  
>>End Sub
>>で、どうでしょうか?
>>
>>プロシージャ名は「tst」でなくわかりやすいもので結構です。
>>プログラムの流れとしては1行目から見て行ってA列・B列両方が空白の行まで見て行きます。
>>
>>なお、C列はあらかじめ表示形式を「日付」にしておいてください。

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