• ベストアンサー

初心者です。EXCELのマクロを作ろうとして、困っています。

初心者です。EXCELのマクロを作ろうとして、困っています。 やりたいことは、以下の通りです。 1行目には、年度並びで月が並んでいます(4月→3月)。 2行目は、空欄ですが、ここに後述のデータをコピーします。 セルA5には、コピーしたいデータが記載されています。 セルA6には、セルA5にデータを記載した「翌月の日付(YYMMDD)」が記載されています。 A6の日付を「前月」にして、2行目の該当月(前月)のセルに、セルA5のデータをコピーします。 以上のことをやりたいのですが、どの様にすれば良いか教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

プログラムを作成する上で考えなくてはならないことは どうやって目的を達成するか、その道のりを考えることです(アルゴリズムと呼びます) 以下の流れを考えました 1 A6セルの日付の1月前の月を得る 2 1行目で 同じ月の数字が何列目にあるか検索する 3 検索して得た列番号の2行目にA5セルの値を入れる 1 について Sub ボタン1_Click() Tuki = Month(Range("A6")) - 1 If Tuki = 0 Then Tuki = 12 MsgBox Tuki End Sub 2の機能を加えます Sub ボタン1_Click() Tuki = Month(Range("A6")) - 1 If Tuki = 0 Then Tuki = 12 MsgBox Tuki Retu = Rows("1:1").Find(What:=Tuki, LookAt:=xlWhole).Column MsgBox Retu End Sub 3の機能を加えます Sub ボタン1_Click() Tuki = Month(Range("A6")) - 1 If Tuki = 0 Then Tuki = 12 MsgBox Tuki Retu = Rows("1:1").Find(What:=Tuki, LookAt:=xlWhole).Column MsgBox Retu Cells(2, Retu).Value = Range("A5").Value End Sub となりました。不要なMsgBoxのコードは削除してもらってかまいません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

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

回答が出ているが、どうすれば良いのか私には、良くわからない。具体例でデータを書いてください。 質問を解釈してみると A B C D  ・・列 1行目 4 5 6 7  ・・・データ=月数字 2行目 空白   <--コピーして張り付ける A5 データあり<---A列だけでなくB列など5行目全体(12ヶ月)にデータがあるのでは???<--B5以右を記述不足では? A6 <---データを記載した「翌月の日付(YYMMDD)」が記載されています。???      例えば2010/9/15 >A6の日付を「前月」にして、-->2010/8/15にするのか? >2行目の該当月(前月)のセルに、セルA5のデータをコピーします。 2行目にコピーするのか。あとだい5行目は空白にするのか。 何のためにこういうことをするのか。 前月の日付は Sub test01() For c = 1 To 1 '4月=A列だけにした Cells(6, c) = DateSerial(Year(Cells(6, c)), Month(Cells(6, c)) - 1, Day(Cells(6, c))) Next c End Sub で出せる。ただし10月31日の「前月」はどうするのかな。大の月ー>小の月の場合。

全文を見る
すると、全ての回答が全文表示されます。
noname#192382
noname#192382
回答No.2

no 1 です。前の回答には不完全のところがありました。次のように訂正させてください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2010/10/23 ユーザー名 : ' Dim mymonth As Integer, myretu As Integer mymonth = Month(Cells(6, 1)) If mymonth = 1 Then mymonth = 13 Else For myretu = 1 To 12 If Cells(1, myretu) = mymonth - 1 Then Cells(2, myretu) = Cells(5, 1) Else Next ' End Sub

全文を見る
すると、全ての回答が全文表示されます。
noname#192382
noname#192382
回答No.1

次のマクロを試してみてください。 Option Explicit Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2010/10/23 ユーザー名 : ' Dim mymonth As Integer, myretu As Integer mymonth = Month(Cells(6, 1)) For myretu = 1 To 12 If Cells(1, myretu) = mymonth - 1 Then Cells(2, myretu) = Cells(5, 1) Else Next ' End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 条件処理マクロ

    エクセルのマクロについて教えていただけないでしょうか? セル A3以下にデーターが入っています(データーが入っている最終行は変化します) B3以下にもデーターが入っていますが、行によっては空欄にもなる場合があります やりたいこと セルAにデーターがあり、セルBにデーターがない場合はセルAのデーターをセルBにコピー セルAにデーターがあり、セルBにデーターがある場合はコピーせず、次の行を判定 これをAにデーターが入っていないセルが出てくるまで繰り返す 条件分岐と繰り返しマクロの組み合わせ方がよくわりません よろしくお願いします

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

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

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

  • エクセルのマクロ

    エクセルのマクロを使いA行のセルの日付が今日の日付より30日以内のときはセルの色を赤くするにはどうすればよいのでしょうか?

  • EXCELのマクロがわかりません・・・

    現在、A列にデータが並んでいるのですが、 これを7つ区切り(例:A1~A7、A15~A21)にして、 別シートに用意した表に行列を入れ替えて、 貼り付けるマクロを作っているのですが、 なにぶんVBは素人ですので、よくわかりません。 今作ろうとしているマクロは、 「元データ」セルのA1からA7までをコピーして、 「作成データ」セルのB2を起点として、 コピーした内容の行列入れ替えを行い貼り付け、 以後、「元データ」のコピー範囲を7つづつ 下にずらし、「作成データ」の貼り付け起点を 1つづつ下にずらして、「元データ」のA列の 最後までくりかえすものです。 必ず「Range」文で引っかかってしまうのですが、 何か構文的におかしいでしょうか? かなり急ぎですので、 わかる方、よろしくお願いしますっ!! 下に、作成したマクロを貼り付けます。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2005/12/5 ユーザー名 : *** Worksheets("元データ").Activate 開始行 = -6 終了行 = 0 ペースト行 = 0 Do 開始行 = 開始行 + 7 終了行 = 終了行 + 7 ペースト行 = ペースト行 + 1 開始セル番号 = "A" & 開始行 終了セル番号 = "A" & 終了行 ペーストセル番号 = "B" & ペースト行 Range("開始セル番号:終了セル番号").Select Selection.Copy Sheets("作成データ").Select Range(ペーストセル番号).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Loop End Sub

  • EXCELでセルの移動マクロを作りたいのですが…

    EXCELについての質問です。マクロを使ってセルの移動をさせたいと考えています。 まず使うデータ範囲はA1:E11です。A1:E10にはデータが入っています。 ちなみに、A列には名前、B~E列には数字が入っており、A11:E11は合計が表示される設定しており、合計の場所はここに固定させたいのです。 その移動のさせ方ですが、 A1:E1に空欄があるとします。 そのときに、マクロを再生させるとA2:E10のセルに入っているデータ(値のみ)を上に移動させたいのです。 さらに、A3:E3の内容を消して空欄が出来たとします。 その時に同じ操作によってA4:E10のデータを上に移動させたいのです。 前者のマクロを単純に作ると縦に9つ分のセルを移動させるマクロでは、 A11:E11も上に移動させられてしまいます。なので、移動させるセルの一番下が10行目になるようなマクロを作りたいのです。 何がしたいのかといいますと、いらないデータを消した時に空欄をマクロで詰めてしまいたいのです。 乱文で判りづらいかと思いますが、知識のある方教えていただけないでしょうか。 よろしくお願い致します。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 たとえば、 セルA1からAA1までのセルの中で、コピーとペーストを行います。(これは記録マクロで作ります) それと同じ作業を、3行下のA3からAA3の行でも行い、 また、3行下のA6からAA6の行で行う といった作業をマクロで作る方法を 教えていただきたいです。

  • エクセルのマクロを教えてください。(初心者です)

    エクセルで子どものお小遣い帳を作ろうと思っています。 簡単に申し上げると、 1つの行に入金欄と出金欄と残高欄とコメント欄という簡単なものです。 残高欄は、一つ上の行の残高+入金欄-出金欄としています。 計算式は、 =IF(AND(INDIRECT("E"&ROW())="",INDIRECT("F"&ROW())=""),"",INDIRECT("G"&ROW()-1)+INDIRECT("F"&ROW())-INDIRECT("E"&ROW())) でやっています。 子どもが勝手に行やセルを追加したり削除したりして、 残高のところがおかしくならないようにINDIRECTを使っているのですが、 さらに一歩進んで、マクロで行を追加していきたいのです。 ボタンを押すなどして、マクロを実行すると 入力するための行が10行いっぺんに追加されるようなものを作りたいのです。 初心者なりにやったところ、 たとえば、1行目に計算式だけを入れた行を用意しておいて、 マクロを実行して5行目から14行目に これをコピーさせることができました。 ところが、もう一度マクロを実行すると またしても5行目から14行目に上書きされてしまいます。 (5行目を選択して貼り付けしてくれているようです。) 2回目にマクロを実行すると空欄となっている 15行目から24行目に新しい欄ができ、 次にマクロを実行すると 25行目から34行目に新しい欄ができ・・・ としていきたいのです。 ずぶの素人の私にどなたか この方法をご教示頂けませんでしょうか。

  • VBの初心者。 セルの削除について教えてください

    まったくの初心者なもので、なかなか上手く動いてくれず困っています。 毎月前月のファイルをコピーして新たにデータを貼り付けして データ処理を行っているのですが、前月のデータを削除するマクロを作成したいと思っております。 1行目のデータは共通なので削除せず、2行目以降のA列~Y列のデータを削除したいのですが 月によって、削除する行の最後が違っております。 どのようにマクロを設定すればいいのかわからず、悪戦苦闘しております。 初心者の私にぜひ教えていただきたく投稿させていただきました。 宜しくお願いいたします。

  • コピーするExcelマクロを作りたいです(2)

    「コピー元」ブックから「コピー先」ブックにコピー&ペーストを 行うマクロを作りたいのですが、列の計算が複雑で困っています。 Excelブックのキャプチャ画像を加えて再投稿します。 画像ではシートになっていますが、画面左のシートのような表から 右のシートの当てはまるセルにデータを写すようにお考えください。 「コピー元」ブックは月に一度ダウンロードするデータで、ピボット テーブルです。一月ごとに、前月の列が各営業所ごとに増えていき ます。行には、商品ごとの売上げが入力されています。 また、各営業所ごとに、年度合計列があります。(営業所の数は10 前後、商品の行は50以上はあります。) 「コピー先」ブックは、あらかじめ年度末までの行列セル、合計列が 用意されていて、「コピー元」ブックからデータを移動してくるのみ でレポートとして毎月提出する体裁です。 単純にコピーするだけならばよいのですが、毎月各営業所一列ずつ 増えていくというのが式にして表せません・・・また、できる限り 数値の変更を最低限にして、毎年度利用できるマクロにするという 希望もあります。 ご面倒かと思いますが、お力を貸してください。

専門家に質問してみよう