• ベストアンサー

Excel VBA セルの指定方法について

Excell2013です。 次のような表(一部)があります。   日   項目      額       分類   12 ノート 250 3 この、250を、別表の分類3の列(H列)の12日の行(15行)のセルに、そこにすでに値があれば250との合計値として入力したいのです。 データによって日付も分類も違いますので、マクロで自動的に入力したいのですが、どうもよくわかりません。 このような場合のVBAでの入力先セルの指定のしかたをどうすればよいのかどなたかご教示ください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

具体的に。 たとえばSheet1のA,B,C,D列に日、項目、額、分類と記入してあって たとえばSheet1の1行目がタイトル行で、2行目以下A列にデータが記入してあるセル範囲全体を対象に転記していきたいのだとして たとえばSheet2に別表があるとして たとえば分類1,2,3はそれぞれ具体的にF,G,H列が対応しているとして たとえばSheet2は1,2,3行はタイトル行だとかで4行目から実データを記入してるとして たとえばSheet2の4行目以下は、1,2,3…日と毎日1行ずつ(土日も1行使って)表を作成してあるとして。 sub macro1()  dim r as long   dim myDay as integer  dim myCol as integer  dim myVal as double  for r = 2 to worksheets("Sheet1").range("A65536").end(xlup).row  myday = worksheets("Sheet1").cells(r, "A").value + 3 ’1日が4行目  mycol = worksheets("Sheet1").cells(r, "D").value + 5 ’分類1が6列目  myval = worksheets("Sheet1").cells(r, "C").value  worksheets("Sheet2").cells(myday, mycol).value = myval + worksheets("Sheet2").cells(myday, mycol).value  next r end sub 「具体的な」マクロを書くときは、それぞれの行や列が具体的なエクセルの何行何列なのか、そもそもそれぞれの表や別表は具体的になんていうシートのどこのセル範囲にあるのか、正しいネタが無いと何も進みません。 次に、マクロと書くときは、具体的にどこのセル範囲を対象に操作をしたいのかも、しっかり決めてかないといけません。 たとえば「今選んでるセル(セル範囲)の行のデータを転記したい」とか「この列がこうなってる行を処理したい」とか、実際にヤリタイ事は何なのですか?ということです。 こういった具合に、マクロはイチイチいちいち手取り足取り何をしたらいいのかプログラムに書き込んでやらないと、何一つ自分ではやってくれないあなた以上の教えてチャンなので、そういう段取りをしっかり考えて進めるようにしてください。

mcwaremoko
質問者

お礼

すごいですね。 初心者の私には魔法のように見えます。 熟練するとあまり難しいこともないのでしょうか。 ともあれ、これで出来そうに思われますので、早速試してみます。 ありがとうございました。

関連するQ&A

  • エクセルでの値の自動代入

    エクセルでワークシートのセルからでもユーザーフォームからでもいいのですが、違うワークシート上の表(列が項目、行が日付)の当日日付のセルにマクロで作ったボタンを押すと値が挿入されるような方法はありますか? アクセスで値の代入のようにできればいいのですが。 マクロでもVBAでもいいのですが、できる方法はあるでしょうか?

  • excelで作ったカレンダーの指定の期間のセルに色を付けたい

    1行目に1日から30日までの日付が入っていて、二行目以降のAの列に項目が入っているカレンダーを作りました。2行目以降には日付を入れないで、その項目によって期間が分かるようにセルに色を付けたいと思います。入力欄は別に設けて、例えば、2004/6/20~2004/6/23と入力するとセルの色が変わるようにしたいです。 どうしたらいいでしょうか?

  • VBA 多数セルの合計

    多数のセルを合計したいのですが… オートSUMでやったのですが選択したセルが多すぎて出来ませんでした。 画像を見ていただきたいのですが。 左に日付、日付ごとに食べ物が4個書かれてます。 それが1日~31日まであります。 私がやりたいのは…。 たとえばE列にある田中さんのラーメンだけの1日~31日の合計を 31日の最後の行に出る様にマクロを組みたいのです。 次は餃子だけの1日~31日までの合計… 次はチャーハンだけの1日~31日までの合計… 次は春巻だけの1日~31日までの合計… オブジェクトにマクロを登録するやり方(標準モジュール??)でお願いします。 VBAは初心者なので詳しく教えて頂けると助かります。 宜しくお願いします。

  • エクセルVBAについて

    VBAに関しての質問です。 A列に日付(10行目から) B列にその日の売上が 300行(300日分)入力されてる表があるとします。 C列にその日を含めた過去N日間の最大の売上を表示させたいのです。 例えば 過去5日間なら過去5日間の最大売上げを毎日表示させたいのです 当然この場合は5日間なのでCの13行目までは空白になります。 「N」日はA1セルに任意の日数で入力することによって希望の期間の数値 が表示できるようにしたいのです。 関数を使ってできるのいですが、事情がありましてエクセルのマクロの 繰り返しのプログラムでやりたいのですが VBAに関しては全く素人ですの。どなたかご教授願えませんでしょうか よろしくお願いします。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • エクセルVBAでワークシート関数のようにしたい

     例えば、セルA1に日付を入力して、セルB1に関数WEEKDAYが入力されていると、すぐセルA1の値を返してくれますが、これと同じことをVBAで再現したいのですが、可能でしょうか?  マクロやVBAでWEEKDAYを記述しても、「ツール」→「マクロ」→「マクロ」か「VBA」でやらないとA1の値をB1に返せないので、A1に日付を入力した瞬間、B1に値を返したいのですが、よろしくお願いします。

  • エクセル vba セル合計

    添付表について下記の様な処理をしたいのですが途中からVBAの書き方が(セル合計)がわからず困っております。  *日別の原価計(K列のセル値)の小計(K列の最終入力行の下※k112)に計算する。 自分ではこの様を処理を考えております。 (1)商品名(G列)最終入力行の1行下を選ぶ(G112) (2) (1)の同行にある(k112)を合計算出セルとして選ぶ (3)商品名(G列)最終入力行(g112)からその列上の空欄行の1セル下(g66)を見て(要はg 112からEnd(xlUp))、その行と同じ範囲のK列(k112ーk66)を合計をする範囲として選ぶ (4) (2)の合計する範囲を(3)で算出する。 VBA素人の私では(1)~(3)までを下記の通り書きました。 Sub 原価合計求める() Dim lastrowshu As Long Dim lastrowgen As Long Dim fastrowgen As Long lastrowshu = Cells(Rows.Count, 7).End(xlUp).Row + 1 '帳票シートの商品名(G列)最終入力行+1を取得する。 lastrowgen = Cells(Rows.Count, 7).End(xlUp).Row '商品名行の最終入力 fastrowgen = Cells(lastrowgen, 7).End(xlUp).Row '商品名最終入力行から一番上 Cells(lastrowshu, 11).Select ここまでを実行すると添付ファイルでいうk112セルをselectするまではうまくいきましたが、 これ以降の(4)の合計の書き方がわかりません。 どなたか御教授願います。 あるいはもっといい方法があれば同時にご指導頂けますと幸いです。

  • エクセルVBAでのスケジュール作成

    いつも大変お世話になっております。 本日も質問させてください。 会社指定の異なる2つのブックのエクセル表に自分の部署の社員全員のスケジュールを入れなければいけません。 (1つは月間、もう1つは週間で、それぞれ各月、各週毎にシートがあります。) VBAのフォームを作成し、週間スケジュールは自動でセットできるようになりました。 ですが、月間のスケジュールがうまくいかなくて困っています。 (入力フォームは共通のものを使用します。) スケジュールの表はシートが月別になっていてA列に社員名、1行目に日付、2行目に曜日、3行目に祝日が表示されるようになっています。 4行目からが各社員のスケジュールですが、1人の1日分のスケジュール入力のセルは2列×3行=6セルです。 (わかりにくいので図で表現したかったのですが、ずれて表示されてしまって余計にわかりにくいのでやめてみました。ちなみに、1人目の1日目のスケジュールのセル範囲はB4:C6となります。) そして、各セルには入力する項目が決まっています。 (この項目についてはフォームで作成済みです。) セルが多いため、Rangeを使おうと思っても指定するのが困難です。 個人的にはRangeのセルの値を別シートに作成した表からindexで検索できたらなぁ。と思っています。 できるかどうかすらわかっていませんが。(汗) もちろん、もっと効率的な方法があればそちらを教えていただきたいです。 週間スケジュールのセルから入力値をもってくる事も考えたのですが、月間は1日から必ず始まっていますが、週間は月曜日からのため、月や週によって日付が異なることなどから、やはり私には難しいのです。 よろしくお願いします。

  • VBA2010,B3の値が変わったら、A3に

    VBA2010で,B列の値が変わったら、A列の同じ行に前日の日付を入力するには、マクロコードをどのように書けばよいですか?B列データ入力範囲はB3~B65536 尚、B3~B65536にはVLOOKUPで、他のブックから値を参照しています。 最後にA列の同じ日付セルを結合し、I列、P列、W列の同じ行に結合したセルをペーストたいのです。 宜しくお願い致します。

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

専門家に質問してみよう