アプリ版:「スタンプのみでお礼する」機能のリリースについて

excel初心者です。VBAはほとんど使った事がありません。現在使用しておりますのはexcel2002です。

今回教えて頂きたいのは、任意の日付の入ったデータの日の部分のみ同じ数字に置換する方法です。
(例)
2003/09/15
2006/10/28
2004/06/07
となっているデータを
2003/09/25
2006/10/25
2004/06/25
としたいのです。

教えてgoo内を検索してみましたが該当するものを探しあてる事ができず質問させて頂きました。

初心者ですので出来れば簡潔な方法を希望致します。
お分かりになる方いらっしゃいましたら、宜しくお願い致します。

A 回答 (5件)

#1の方の方法は表示上だけで、値そのものは変化しません。

これを使って計算、例えば45日後を求める、などの場合は工夫が必要です。表示上だけでよい場合は、簡易でいいアイディアだと思います。

値そのものを置換したい場合、作業列を使って関数式で

=DATE(YEAR(A),MONTH(A1),25)

で求めることができます。

VBAでなら日付セルを選択した状態で、下記マクロを実行して下さい。日付のみを一括で変換します。

【手順】
1. [Alt]+[F11]でVisual Basic Editor起動(以下VBE)
2. VBE画面で[挿入]-[標準モジュール]クリック
3. 2.で開いたウインドウに下記VBAコードをコピー&ペースト
4. VBEを閉じる
5. [ツール]-[マクロ]-[マクロ]で実行

【以下VBAコード:場所=標準モジュール】(次行から終わりまで)

Sub 日付置換サンプル()

  Dim rngCurrent As Range
  
  Application.ScreenUpdating = False
  For Each rngCurrent In Selection
    If VarType(rngCurrent) = vbDate Then
      With rngCurrent
        .Value = DateSerial(Year(.Value), Month(.Value), 25)
        .NumberFormat = "yyyy/mm/dd"
      End With
    End If
  Next rngCurrent

End Sub

この回答への補足

ご回答有難うございます。

DATE関数で出来ました。

VBAのやり方も、とてもわかりやすく説明して頂き有難く思います。ただ、やってみたところ、次のようなエラーが出てしまいました。

「このブックにあるマクロは、セキュリティレベルが高に設定されており、デジタル署名されていないかまたは安全なものとして確認されていないため利用できません。マクロを実行するには、署名するか、またはセキュリティレベルを変更する必要があります。」

今回はDATE関数でやろうと思うのですが、もしよろしければ、VBAのエラー解除の方法を教えて下さい。

宜しくお願い致します。

補足日時:2005/03/14 15:21
    • good
    • 0

>...VBAのエラー解除の方法...



[ツール]-[マクロ]-[セキュリティー]のセキュリティーレベルが[高]に設定されているからですね。[中]にして、ブックを開くときに「マクロを有効」にして開きます。
    • good
    • 0
この回答へのお礼

出来た!出来ました!有難うございます。

セキュリティレベルの設定まではたどりついたのですが、ブックを一旦閉じずに続行しようとしていたので、いつまで経ってもエラーの連続でした。

迅速、かつ、丁寧にご回答頂き本当に有難うございました。

お礼日時:2005/03/14 16:01

元データの年月の部分は変更せずに、日付をすべて25に変更したいということでいいでしょうか。



日数計算などせず、見た目だけの変更でよいのでしたらNo.1 の方の方法が簡単だと思います。
データを変更する必要あるのでしたら、関数を試してください。

元データの右に1列追加して下記のような計算式を入力します。
(元データがA1にある場合)
=DATE(YEAR(A1),MONTH(A1),25)

DATE関数は year(年,月,日) と指定することで( )内の日付データに変換してくれるものです。
Year Month はそれぞれ日付データから該当部分の数字を抜き出します。

上記のような計算式を入力して、データ分だけコピーして下さい。
尚、これは計算式なので、元データを削除するとエラーになります。
元データが不要な場合は、計算式を指定した列を選択してコピーし、同じ場所に[編集]-[形式を選択して貼り付け]コマンドで「値」として貼り付けて下さい。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。

DATE関数でやったところ、思ったように変更できました。元データを削除した場合の対策まで丁寧にご指導頂き感謝致します。

本当に有難うございました。

お礼日時:2005/03/14 15:16

A1に日付が入っているとして


=DATE(YEAR(A1),MONTH(A1),DAY(10))
以下、下の行にコピー、
とすれば、日付(シリアル値)としてあつかえます。
    • good
    • 0
この回答へのお礼

早々にご回答有難うございます。

DATE関数やってみたところ出来ました。なるほど!
週末一生懸命格闘していたのに、こんなに簡単な事だったとは。みなさんのお手をわずらわせてしまったようでお恥ずかしい限りです。

早速データ更新しておきます。本当に有難うございました。

お礼日時:2005/03/14 15:14

置換ではなく、表示上単純に日付を揃える方法です。


セルの書式で「ユーザー定義」にし書式を
yyyy/mm/"25"
とします。
すると、入力された年月から、年(yyyy)と月(mm)、そして日は取得せず、代わりに指定した「25」と表示されます。
    • good
    • 0
この回答へのお礼

早速の回答有難うございます。
こんなに早く回答を頂けると思ってもいなかったので感激です。

上記やってみました。できました!

ただ、表示だけでなく値も変更したいので、他の方にご提案頂いたDATE関数を使用することに致します。

本当に有難うございました。

お礼日時:2005/03/14 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!