人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

次の条件に見合うマクロををご教示いただければ幸いです
B1の値がXならA1の日付に30日加えた日付けをC1にかえす
B1の値がYならA1の日付に15日加えた日付をC1にかえす
B1の値がZならA1の日付をそのままC1にかえす


●質問者: nmfo4n67
●カテゴリ:コンピュータ
✍キーワード:マクロ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● poppyday
●20ポイント ベストアンサー

C1のセル書式が日付に設定されている条件で

Sub Macro()

If (Range("B1").Value = "X") Then

Range("C1").Value = Range("A1").Value + 30

ElseIf (Range("B1").Value = "Y") Then

Range("C1").Value = Range("A1").Value + 10

ElseIf (Range("B1").Value = "Z") Then

Range("C1").Value = Range("A1").Value

End If

End Sub

でいいのでは?


2 ● きゃづみぃ
●20ポイント

マクロとありますが 数式でも できます。

C1に

=IF(B1="X",A1+30,IF(B1="Y",A1+15,IF(B1="Z",A1,"")))

と入れて C1の書式設定を 日付にしてあげればいいです。


3 ● Silvanus
●20ポイント

下記の式をC1に入力して下さい。

=IF(B1="X",A1+30,IF(B1="Y",A1+15,IF(B1="Z",A1,"Error")))

式入力後でも結構ですので、C1のセル表示形式を「日付」に設定して下さい。

B1に入力された値がX、Y、Zの何れにも該当しない場合は

"Error"というテキストを出力する様にしてありますので、

不要であれば当該部分を削除して下さい。

相対参照になっておりますので、この式を他のセルにペイストしても

同様に使用できます(例: 元の日付 D5、[X、Y、Z] E5、結果の日付 F5)。


4 ● Silvanus
●20ポイント

Excel標準の関数[If()]でなく、マクロでオリジナル関数を作成し使用する場合は

Function DateCal(RDate As Date, CCheck As String) As Date

Select Case CCheck

Case "X"

DateCal = RDate + 30

Case "Y"

DateCal = RDate + 15

Case "Z"

DateCal = RDate

Case Else

DateCal = RDate

End Select

End Function

という様なマクロを入力して、セルC1に

=DateCal(A1,B1)

と入力すればOKです。セルC1の表示形式を「日付」にすることをお忘れなく。

この方法であれば、元の日付と[X、Y、Z]の値が入力されているセル位置が

限定されることもありませんし、条件・処理の追加も容易ですね。


5 ● LimgHT
●20ポイント

直接な回答ではありません。

マクロを使う背景についての情報が無かったので…(検索できた人のためにも)参考に


マクロは回答者1ので問題ないと思います。

ただ、この程度の機能はセルC1に次の式を入れて実現するのが普通かと。マクロの出番じゃない。


=if(B1="X",A1+30,if(B1="Y",A1+15,if(B1="Z",A1,"")))

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ