• 締切済み

日付の表示を変えるマクロ

閲覧ありがとうございます。 Excelのマクロに関しての質問です。 今、テキストデータから「東京都・晴れ」を含む行をExcelファイルに抽出後、そのデータを日付別にふり分けるマクロを作っています。 そこで、テキストデータの日付の表示「11/8/2009」(2009年8月11日)や「8/9/2009」(2009年9月8日)を「2009/8/11」「2009/9/8」のように、年・月・日という表示に変えたいのですが、検索しても色々試しても良いマクロが浮かびません。 よろしければ素敵なマクロ、ご教授願います。 ※ちなみに、入力規則などを指定してもテキストからデータを引っ張ってきているため(?)か上手くいきません。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

ごめんなさい。 d/m/yyyy 形式なんだね。英国式?なら、#3 は没で(´A `;) 米国式だと m/d/yyyy だから、11/8/2009 は 2009/11/8 だけど。。この点ははっきりさせた方が良いかもです。 VBA というか Excel のシステム自体 USA 産ですから、 日付書式は基本 m/d/yyyy です。 したがって、#3 のソースで変換をかけると 11/8/2009 は、 2009/11/8 になりますので、ご注意を。

noname#144013
noname#144013
回答No.5

こんにちは。 #4の方が言われる「色んな解釈」の内のひとつになってしまいますが。。。 意味を取り違えていたらすみません。 変換する日付の文字列というのは、   変換前:  "11/8/2009" ← 日/月/年 の順             ↓   変換後:  "2009/8/11" ← 年/月/日 の順 ということでしょうか? 上記の場合だという前提ですが、 以下は、日付文字列の変換部分のみのマクロの一例です。 ■サンプルマクロ 注)インデントのため全角スペースを入れています。 /////↓ここから////////// '==日付のフォーマット変換テスト== Sub DateConv()   Dim strDate As String   Dim vaDate As Variant   'テスト1:セルに直接データをセットする場合   strDate = "11/8/2009"   vaDate = Split(strDate, "/")   Range("A1").Value = DateSerial(vaDate(2), vaDate(1), vaDate(0))   'テスト2:一旦、文字列に格納してからセルにセットする場合   strDate = "8/9/2009"   vaDate = Split(strDate, "/")   strDate = vaDate(2) & "/" & vaDate(1) & "/" & vaDate(0)   Range("A2").Value = strDate   'テスト3:日付シリアル値のセルデータを文字列として別セルにセット   Range("B1").Value = "'" & Range("A1").Text   Range("B2").Value = "'" & Range("A2").Text End Sub /////↑ここまで////////// ■補足 予め、日付データの貼り付け先のセルの表示形式が、   「標準」 または、「日付」 になっていることが前提です。 また、対象セルの表示形式が「標準」になっていた場合で、上記のマクロを 実行した後は、セルの表示形式が自動的に「日付」に変更されます。 いずれの場合も、データ貼り付け後のセルの値は「日付シリアル値」になって いますので、別の作業で文字列として扱いたい場合は、「日付シリアル値」を 文字列に変換する処理が必要になります。 ※上記サンプルの「テスト3」がその一例です。 以上です。参考になれば幸いです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

>2009年9月8日)を「2009/8/11」「2009/9/8」のように、年・月・日という表示に変えたいのですが 特に >年・月・日という表示に変えたいのですが 質問が易しすぎて、色んな解釈が出来てしまうことは、今まで出ている回答を見ればわかる。何がしたいの? 年月日に分割 文字列化 表示形式の設定 など 元のデータが、「エクセルで日付入力の基本」の、日付シリアル値に現状なっているのか。 なっているなら表示形式の問題でNumberFormat(Local)の問題で、極く基礎的なことで、こんなところに質問するまでも無いレベルの問題だ。 Googleででも「NumberFormat」でWEB照会のこと。 >今、テキストデータから「東京都・晴れ」を含む行をExcelファイルに抽出後、そのデータを日付別にふり分けるマクロを作っています。 前置きみたいなこの箇所は質問に書く必要あるのかな。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんな感じとか。IsDate でチェック済みなら、Cdate 関数を 使っても良いでしょう。 ' // セル選択範囲において日付として評価できる文字列を ' // シリアル値に変換する ' Sub Sample()      If Not TypeOf Selection Is Range Then Exit Sub      Dim r As Range   Selection.NumberFormat = "yyyy/m/d" 'シリアル値表示形式   For Each r In Selection.Cells     If IsDate(r.Value) Then       r.Value = DateValue(r.Value)     End If   Next End Sub

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

vを一旦、シリアル値に直した方が良いですね MsgBox Format(DateValue(v), "yyyy/m/d")

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Dim v As Variant v = "「11/8/2009」(2009年8月11日)" v = Split(v, "(") v = Replace(v(1), ")", "") MsgBox Format(v, "yyyy/m/d")

関連するQ&A

  • エクセルでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願いします。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • EXCELでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願い致します。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • マクロを使用したいのですが…

    Excel2003にてマクロを使用し、グラフを作成しようと考えております。 データ量が多く、作成するデータが多いため、マクロを使用すると時間を短縮できると考えました。 抽出するデータは、 抽出するデータのタイトル 日付(時間含む) 値 の3つです。 Excelには例えば A列…電力と記入。 B列…2010年1月1日0:00~2010年1月31日23:59 ※参考として、30分毎にデータがあると思ってください。 C列…電力の消費量 ※上から15wや、16.5wなど記入されていると考えてください。 このとき、A列は1月31日23:59と入力されている行まで「電力」と入力されていると考えてください。 簡単にですが、このようなデータのexcelを毎月作成する必要があるので、マクロとカレンダーを連動(?)することができたら、非常に手間がかからずスピーディにグラフを作成することができると思います。 お手数ですが、このようなグラフおよびマクロデータを作成する場合の 作成方法をご存知でしたらご教示いただければと思います。 よろしくお願いいたします。

  • 日付に絡むマクロの作り方

    エクセルのマクロ初心者です。 以下のようなデータがあり、 テキストボックスで任意の商品を指定し、 その商品と同じ日付のデータを抽出する操作をしたいです。 A列が商品名、B列が時間、C列が備考欄です。 データ数は月によりランダムですが1000程度あります。 A列   B列        C列 商品A 2011/5/1/12:00 関東 商品B 2011/5/2/2:30 北陸 商品C 2011/5/1/18:15 近畿 (商品Aと入力すると・・・) A列   B列        C列 商品A 2011/5/1/12:00 関東 商品C 2011/5/1/18:15 近畿 (商品Aと同じ5月1日のデータ(商品C)を抽出) DAY関数で日付だけ引用してなんとかやってみようと思いましたが、 私の現状の技量ではできませんでした。 まだVBAは参考書のものをコピーして使い、 基本的に「マクロの記録」で操作を覚えさせて用いているレベルなので 初歩的な質問で申し訳ありません。 詳しい方、エッセンスだけでもご教授ください。 不明点がありましたら補足いたします。

  • マクロで日付データがおかしく取り込まれます

    板違いで質問していたためレスが着かなかったのでこちらに 質問させていただきます。 ある測定器の測定結果のテキストファイルをエクセルのマクロで取り込む マクロを作成しましたが、開いたテキストファイル内の日付データが正しく読み込めません。 データは”07/04/11 12:33:55”という形式なのですが これをマクロで取り込むと”2011/07/04 12:33:55”と認識されてしまい 困っています。 しかもおかしな事にマクロを使わず、ファイル→開く→テキストファイル、又は外部データの取込→テキストデータ、で取り込むと 日付部分のデータは正しく取り込まれます。 テキストファイルの形式は固定長なので arrey関数等の設定を確認していますが、何度やってもマクロでは おかしな状態でしか取込出来ません 使用環境 winndousXP+office2000 です。 マクロは Workbooks.OpenText Filename:=.FoundFiles(i), StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(27, 1), Array(31, 1), Array(38, 1)) Rows("1:1").Select です。 宜しくお願いします。

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • 日付で抽出 VBA マクロ処理

    日付でその日から1ヶ月の間の購入した図書データを 抽出したいのですが、マクロ初心者なのでなにも分かりません;; オートフィルタではない方法でやらなければなりません;; 日付でデータを抽出するにはどの関数を使えばいいでしょうか。 また、その日から1ヶ月の間というとこに さらにわからなくなります;; また、抽出されたデータを違うシートへとコピー しなければなりません;; 詳しく教えていただけると幸いです;; よろしくお願いいたします;;

  • エクセルのマクロで教えてください

    すみません。もし教えていただける方がいらっしゃればお願いいたします。以下のようなエクセルのデータがあるとします。 この中で,同じ担当者の最新の日付の行のみを抽出したデータのシートを作りたいのです。以下のデータであれば,2,3,5,6,8,9行目を削除するマクロを作成したいのですが,どのようなマクロを作成ればよいのでしょうか。 A     B    C 1  担当者   日付   金額 2 たなか   8/1   10,000 3 たなか   8/10   15,000 4 たなか   8/21   20,000 5 さとう    8/2    8,000 6 さとう    8/12   12,000 7 さとう    8/22   15,000 8 やまだ   8/1     9,000   9 やまだ   8/7    12,000 10やまだ   8/15   18,000

  • マクロを使ってテキストを抽出したい?

    エクセルのマクロを使ってテキストを抽出したい? ある1つのCSVデータがあります。エクセルで開いてみるとA列からU列までデータがびっちり入っています。 F列の各セルにはテキストを含むhtmlタグや%%NL%%やスペースなどあります。 質問なのですがF列をテキストだけに変換(抽出)したいです。 そのようなマクロを教えていただけないでしょうか?

  • 行コピーして、今日の日付の行に貼り付けるマクロ

    こんにちは、エクセルマクロについて、助けて頂きたく質問させていただきました。 添付しました画像のような表があり、 セルA2に「=TODAY()」が入っていて、セルB2から右は別シートのデータを参照しています。 マクロを実行すると、2行目を行コピーし、セルA3以下の日付からセルA2の日付(今日の日付)を探し出して、行貼り付けしてほしいです。 行コピーや値で貼り付けはマクロの記録を使って、詳しくない私でもなんとか作ることはできるのですが、 今日の日付を探し出して、そこに貼り付ける。というマクロは作れませんでした・・・。 お助け下さい、宜しくお願いします! ※補足します セルA2の今日の日付は便宜上入力しているだけです。無い方がマクロを組みやすいのなら、無くせます。

専門家に質問してみよう