• ベストアンサー

Excel(2000)のマクロで下記の様にしたいのですが

Excel(2000)のマクロで下記の様にしたいのですが A1 2009/5/27 (開始) B1 2009/6/3 (終了) A1からB1の日付を 4の行には月 5の行には日を 順に表示させたいのですがどうしたらいいですか? 5 ........ 6 27 28 29 .... 1 2 3 A4 5月 A5 27 B5 28 C5 29 D5 30 E5 31 F4 6月 F5 1 G5 2 H5 3 の様に。 教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

#1 さんと同じような考え方ですが、もう少し厳密に。。。 1)A5 に「=A1」と入力します。 2)B5 に =IF(COLUMN(A5)<$B1-$A1+1,A5+1,"") と入力します。 3)B5 を C5:IV5 に コピー します。 4)5:5 を選択し、[セルの書式設定] - [分類(C)] - [ユーザー定義] で、[種類(T):] を「d」にします。  以上で、5列目 に、「27、28、29、30、31、1、2、3」と表示されます。 5)A4 に「=A5」と入力します。 6)B4 に =IF(B5<>"",IF(MONTH(A5)<>MONTH(B5),B5,""),"") と入力します。 7)B4 を C4:IV4 に コピー します。 8)4:4 を選択し、[セルの書式設定] - [分類(C)] - [ユーザー定義] で、[種類(T):] を「m"月"」にします。  以上で、4列目に、「5月、、、、、6月」と表示されます。  これを マクロ でするとなると >A1 2009/5/27 (開始) >B1 2009/6/3 (終了) の間の日数を i = Range("B1").Value - Range("A1").Value + 1 などとして、変数 i にでも格納し、 For j = 1 To i  Cells(5, j).Value = Format(Range("A1").Value + j - 1, "d")  If j = 1 Or Cells(5, j).Value = 1 Then   Cells(4, j).Value = Format(Range("A1").Value + j - 1, "m月")  End If Next j などとするとできますでしょうか。。。

rinkairyo
質問者

補足

>i = Range("B1").Value - Range("A1").Value + 1 > >などとして、変数 i にでも格納し、 > >For j = 1 To i > Cells(5, j).Value = Format(Range("A1").Value + j - 1, "d") > If j = 1 Or Cells(5, j).Value = 1 Then >  Cells(4, j).Value = Format(Range("A1").Value + j - 1, "m月") > End If >Next j 回答ありがとうございます。 これだと無限ループしてしまいます。 どうしてでしょう?

その他の回答 (1)

  • NNori
  • ベストアンサー率22% (377/1669)
回答No.1

とりあえず考え方だけ まず 日付を必要な分埋めちゃいます。 A4に 2009/5/27 を入力 B4=A4+1 を入力 コピーして、4の行にコピー そうすると A4~Z4 とかに日付がひとつづつ増えた状態になります。 この状態で今度は A5=A4 を入力コピーして、5の行にコピー これで A5~Z5 とかに上と同じ表示になります。 行4の表示フォーマットを ユーザー定義にして、 m"月" 行5の表示フォーマットを ユーザー定義にして d とします。 これをマクロにするだけです。

関連するQ&A

  • Excelで複数行を1行にするマクロについて

    Excel2000で3行を繰り返し、1つの行にまとめていくマクロの書き方についてご教授ください。 例えば下記のような並びの時、 A B C D E F G H I ..... マクロを使って、 A B C D E F G H I ...... のようにしたいと考えています。

  • Excel のマクロを作成したい。

    Excel で作成した作業計画表(テ-ブル)に下記マクロを作成し実行したいので。 当初計画表には後述のB,C,Dは存在していない。 下記マクロにてテ-ブル内に追加したセ-ルB=開始日、C=終了日、D=作業期間を自動に求めたい。 タイトルとして 第1行目コロンA=作業者名、B=開始日、C=終了日、D=作業期間、E=2011年10月31日、 F=2011年11月7月、次のコラムから1週間後の日付が設定されている(テストとしてJまで) J=2011年12月5日 第2行Aコラムには作業者=田中さん、B,C、Dを自動で求めたい。 第3行Aコラムには作業者=鈴木さん、B,C、Dを自動で求めたい。 第4行Aコラムには作業者=林さん、B,C、Dを自動で求めたい。 Excel のテ-ブルでは 第2行A=田中さん EからFに(当初はB~G)赤色で線を塗り2週間の作業とした。 第3行Aコラムには作業者=鈴木さん、FからGに赤色で線を塗り2週間の作業、 第4行Aコラムには作業者=林さん、HからJに赤色で線を塗り3週間の作業として計画した。 田中さんの作業開始日は2011年10月31日、終了日2011年11月12日、作業期間は2週間との 結果を求めたい。 下記マクロは Sub test() i = Colum(E)     :Eコラムの番号 x = Colum(J)     :Jコラムの番号 y = EtActivitecell.Row For c = i To x Step 1 If Adresse(Row(y), Colum(c), 4) = "D" Then Adresse(EtActivitecell.Row, EtActivitecell.Colum) = ADRESS(Colum(c), 1, 4) End If Next End Sub

  • Excel 2007のマクロ記述について

    Excel 2007で、B4セルからI最終行までの整数のみを小数点以下1桁にする処理をマクロで実行したいのですが、どのように記述したらよいか教えてください。 最終行とはI列にセルの値がある最後の行です。 下記の例のマクロ実行結果は、1→1.0、2→2.0となります。 (例)      列      A  B    C    D    E   F  G   H  I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2   2  2   CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6   1   1  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1   1  1.5  1.5  CIRCLE  CIRCLE マクロ実行結果      列      A  B    C    D    E   F  G   H   I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2  2.0  2.0  CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE

  • エクセル・並び替えのマクロ

    エクセルで並び替えのマクロを作ったのですが ___A ______B ______C ______D ______E ______F _____________G 1 (株)カネカ【東証1部 : 4118.T】 2 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 3 07/07 1,030 1,069 ___941 __974 30,772,000 ___974 4 07/06 1,057 1,093 1,016 1,033 26,904,000 1,033 5 07/05 1,080 1,086 1,023 1,051 26,541,000 1,051 6 07/04 1,113 1,209 1,087 1,098 36,317,000 1,098 7 07/03 1,096 1,128 1,020 1,124 23,988,000 1,124 8 07/02 1,098 1,147 1,020 1,105 28,609,000 1,105 9 07/01 1,100 1,158 1,078 1,082 17,808,000 1,082 このような表で マクロ記録開始 セルA3をクリック データ→並び替え 優先されるキー:日付・昇順 データ範囲の先頭行:タイトル行 マクロ記録終了 で、できたマクロが Sub Macro1() Range("A3").Select Range("A1:G9").Sort Key1:=Range("A3"), Order1:=xlAscending,Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 1行目、2行目の(株)カネカ、日付、始値…、が8行目、9行目になってしまいます そこで、マクロの Range("A1:G9")を Range("A3:G9")に書き換えて Sub Macro2() Range("A3").Select Range("A3:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 日付が、07/07、07/01、07/02、07/03、07/04、07/05、07/06 の順番になってしまいます どうしたらよいのでしょう?

  • エクセルにて複数セルの並び替え

    こんにちは、エクセルについて教えてください。列はA~Hまで、行は1~200行ほどに値が入っています。 例えばValueが以下のようだとします。 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 ... これらのValueを、別のSheetに以下のように並び替えたいのですが、 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 A3 B3 ...と、これがA200~H200の行分まで。なのでPaste後は800行になります。どうにかマクロか何かで簡単に 出来ないかと思い、どなたかご教授いただければと思います、よろしくお願いします!

  • EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?

    EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。   A列   B列  C列  D列  E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600  . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。   A列   B列 C列 D列 E列  F列 2002/12/17            15240                  15280                  15220                  15220 2002/12/18            15250                  15250                  15210                  15210 2002/12/19            15220 15310 15220 15310                   . . .                    といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • エクセルで日付を付けるマクロ

    エクセルで記入のある行のみに最後の列に日付を加えたいのですが、例えば1~10までのAからEまで記入されていたとするとF1~F10までに日付が入るようにしたいのですが、できればこのマクロが可能でしたらどなたかご教授下さい。 またスペースのための未記入行をまとめて削除する方法(できればマクロ)ももしご存知の方お願い致します。

  • テキストをExcel2000に貼り付け

    .txtを参照してファイル内容を、マクロで Excel2000に貼り付けたいと考えています。 先頭の1行は決まっていて2行目からが 対象になります(コロン区切りのファイルです) コロンは削除してA~Jまでの文字を ExcelのA~Jのセルに貼り付ける 例).txtの記述 START :A :B :C :D :E :F :G :H :I :J :A :B :C :D :E :F :G :H :I :J :A :B :C :D :E :F :G :H :I :J ExcelのA1セルから最大20000行まで対応したいです。 どうかご教授願います。

  • Excelでマクロを使用した削除に関して

    マクロ初心者です。 Excelにて、以下のような表データがあるとします。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50  a   b   c   d 3行  51  e   f    g   h    4行  52  i    j    k   l この表の中で、A列と1行目の値が同じになる交点となるセルの値"以外"を 削除して以下のように表示させたいのですが、 その方法がわかりません。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50      b       3行  51  e          h    4行  52          k    単純な行削除・列削除ではないため、 頓挫しています。お知恵を拝借したく、よろしくおねがいします。

専門家に質問してみよう