マクロで表の一部を書き換えたい

このQ&Aのポイント
  • 指定したセルを入力してマクロを実行すると、表の一部を書き換えることができます。
  • 条件に従い、管理番号が存在するか、そして使用状況が未使用かを確認し、書き換えます。
  • 入力した管理番号が既に使用になっている場合や、表に存在しない管理番号を入力した場合はエラーメッセージを表示します。
回答を見る
  • ベストアンサー

マクロで表の一部を書き換えたい

A列に購入日・B列に管理番号・C列に使用状況・D列に使用日と言った表が有るとして、指定したセル(例えばE5に管理番号・E6に使用日)を入力してマクロを実行した時に表の一部を書き換えたい。 A列は条件から外しても良いと思いますので以下の説明は省略します。 表には 管理番号 使用状況 使用日 1001  未使用  (空白) 1002  未使用  (空白) 1003  未使用  (空白) 使用日を1月1日・管理番号を1002と入力した時に 管理番号 使用状況 使用日 1001  未使用  (空白) 1002  使用   1月1日 1003  未使用  (空白) と書き換えたい。 条件は、まず表の中に入力した管理番号が有るかの判別し無ければエラーメッセージを返して終了、次に入力した管理番号が既に使用になっていないかを判別し使用になっていればエラーメッセージを返して終了、この2つの条件を満たした時に表を書き換えて完了。 解り難い説明で申し訳ありませんが、よろしくお願いします。

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

  • ベストアンサー
  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

1.「検索セル」は、変数名です。 2.書き換えマクロは、次のとおり。 Cells(検索セル.row,2)="使用" Cells(検索セル.row,3)=Cells(6,5)

nepros
質問者

お礼

本当にありがとう御座いました。 お陰さまで行き詰ってた管理表が完成に近づきました。

その他の回答 (1)

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

マクロは以下の通り。 Set 検索セル = Range("A:A").Find(Cells(5, 5)) If 検索セル Is Nothing Then MsgBox "ERROR" End Else If Cells(検索セル.Row, 2) = "使用" Then MsgBox "ERROR" End Else '書き換え(省略) End If End If

nepros
質問者

お礼

回答して頂き誠にありがとう御座います。 検索セルを具体的な式で書いて頂ければ助かるのですが、それと書き換えの式を省略なしで教えて頂けないでしょうか? 素人過ぎて済みません。

関連するQ&A

  • マクロや関数で来店管理表を作成したい。

    最終来店日別・顧客番号順の管理表を作成したいと考えております。   表1・初日データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          100           2011-11-09   7           30           2011-11-09   8           500           2011-11-09   9           200           2011-11-09 10 ~   1000                                            表2・2日目データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          150            2011-11-10   7           500           2011-11-10   8           10            2011-11-10   9                  ~  1000                                            表3・来店日管理表 行番号 列番号 B  列番号 E     列番号 F        顧客番号  最終来店日    来店回数   6    10      2011-11-10    1   7    150          2011-11-10   1   8     500          2011-11-10   2   9     30    2011-11-09   1   10   100      2011-11-09      1   11    200     2011-11-09      1   12      ~  1000 ●〔表1〕・〔表2〕のデータから、〔表3〕のような〔来店日管理表〕の作成方法を教えてください。  1・初日 1・初日に〔表1〕のデータを〔表3〕に表示し、〔列番号 F〕に来店回数を〔1〕と表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する  2・2日目 1・〔表3〕のデータと〔表2〕のデータを統合して、初来店者は〔列番号 F〕に来店回数を           〔1〕と表示する          複数回来店者は、〔列番号 F〕に来店回数を〔前回回数+1〕して表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する 宜しくお願い致します。

  • エクセル マクロを使った表について

    エクセル初心者です。マクロを、教えていただけませんか。 シート1:入力シートです。 例えば以下のような表があります。         月 1日 2日 3日 4日・・・31日 個別物件名1   A  B  C  空白    D 個別物件名2   E 空白 空白  F    空白 個別物件名3  空白  G  H   空白   I シート2:シート1のリンクシートです。         月 1日 2日 3日 4日・・・31日 個別物件名1   ○  ○  ○ 空白    ○ 個別物件名2   ○ 空白 空白  ○   空白 個別物件名3  空白  ○  ○ 空白    ○ 上記のようにシート1には毎月、ある決まりに沿ってアルファベットを 入力するのですが、入力し終わったら(入力と同時でも構いません) シート2には、そのアルファベットを入力してある位置に印として ○を打ちたいんですが、どのように組んでいけばよいのか解りません。 すいませんが、ご教授ください。よろしくです。 補足 ・シート1とシート2の表の書式はまったく違うため、貼り付けは  できません。 ・結局は、シート1のあるセルに文字が入力されると自動的に  シート2のセルに○の印がつき、上記表で言えば、反映回数?は  9回ですが月によって反映回数は変わります。(入力と同時の場合) 説明が下手ですいませんがよろしくお願いします。

  • 表の座標への入力

    例えば、100台の駐車場で月極料金の入金状況を管理する表を作ります。行には、駐車番号、列には何月分と言った具合です。その上で、別のシートに日報として一日の売り上げを列記していきます。その一行の中で駐車番号、何月分、日付を入力する位置(列)を決めておいて、管理表の座標を探し日付を入力出来るようにしたいのです。リンク付けの関数なのか、プログラムを組むほど難しいことなのか方法を教えて下さい。   

  • エクセルマクロで注文表を作成したい

    最大約5000件の注文表を作成において、マクロを使用して簡易化したいと思っています。 基本的には連番と枚数だけを業者に知らせるシンプルな注文表なのですが、以下のことをマクロで組みたいです。 (1)注文番号と注文枚数をピボットで集計したあと、A4(8列25行)雛形の表に注文のあった番号だけ枚数を入力したい。(注文のない番号も空白で必要だそうです) (2)ヘッダーをわざわざ設定を開いて変えるのではなく、シート上に作成したテキストボックスに入力するだけで、変更できるようにしたい。 (3)次回、集計するときのために雛形の枚数部分だけをボタンを1クリックするだけで削除したい。 注文は手書きでくるため、注文番号+枚数を入力するだけでも かなりの作業になるのです。ということで皆様の知恵をお借りできればと思います。マクロは初心者ですが、どうぞご指導のほどよろしくお願いいたします。

  • 【Excel VBA】複数の条件を満たすデータを行削除

    Excel2003を使用しています。 ある表の中のデータで、次の4つの条件を満たすデータを行削除したいのですが、マクロではどのように書いたらいいのでしょうか?  E列…データが入力されている  F列…空白  G列…空白  H列…空白 よろしくお願いします。

  • エクセルで表のある列を最初から最後まで選択するマクロ

    今現在、シートにA3:E700までの大きな表があります。 中のデータは文字列や数値です。 A列B列には途中に空白はありません。C~E列には空白もあります。 この表のB列だけを選択するマクロを書きたいのですが、データは日々増減するため最終行が特定できません。 どのように書けばいいのでしょうか?

  • マクロを使って文字が入力されたセル数を数える

    マクロを用いて、文字が入力されたセル数をカウントしたいと考えていますがうまくいかず悩んでおります... 具体的には、セルB1からB1000にデータが入力された場合、左隣のA列に1から番号を付したいと考えています. B列が空白のままの行は、A列も空白にしておきたいです. (セルB1からB1000まで全てにデータが入力された場合、A1からA1000には1から1000までの番号が入る) また、A列に付された番号を判断し、100番毎にA列からE列までセル背景を色分けしていきたいと考えています. (B列が空白ならxlNoneでその行は無色のままにしたい) セル背景の色分けだけであればうまくいったのですが、B列の入力状況により自動でA列に番号(数字)を変化させたら思い通りに動かず困っています. ご教示、宜しくお願いします.

  • エクセルのマクロ

    A列にアルファベット、B列からE列まで数字が入力されている表があります。 A1から順に(A1→A2→A3→・・・)、A列の文字を調べてそれが"A"であった場合のみ、同じ行のB列からE列の最大値をF列に、最小値をG列にコピーする(A列の文字が"A"以外の場合は何もせず下の行を調べる)、ということを繰り返し、A列が空白になった時その作業を中止する、というマクロを作りたいのです。 もちろん、一つの表だけならA列で並べ替えをして関数を使えば簡単にできますが、表がたくさんあるので自動化したいと思います。 マクロに関してはまったくの初心者なので、お知恵をお借りできればうれしく思います。

  • エクセルのマクロでこういう場合は?

    エクセル97です。 Sheet1の E3:J29 に表があります。 E列、F列は文字列、G列は数値、H~J列には式が入っています。 この表の G列の値が空白や0でない行だけをコピーして、Sheet2 のB2 以下に切れ目なく表の「値」を貼り付けるにはどうのようなマクロを書けばいいのでしょうか?(G列が空白や0の行はSheet2の表では一切無視され、空白行ができないようにしたいのです。) よろしくお願いします。

  • (エクセル)表から1列の別表をつくりたい。

    表に入力されたものを1列に並び替えをしたいのです。(エクセル関数) エクセルの表から、セルに入力された情報を抜き出し、並び替えたいのですが、行き詰ってしまい質問させていただきます。 (やりたいこと) 添付資料のように、事業所ごとに購入した物品が日付ごとに入力されていきます。この表を一列で並び替えることを したいのですが、現状の表の形で1列に抜き出すやり方が思い浮かびません。ひとつずつリンクを設定していけばいいですが、 それですと、空白のセルができてしまうこともあり、空白を消すためにフィルタをやらなくてはいけず、なんとか関数でどうにかできないと質問させていただきました(つまり空白のセルは飛ばし、隙間のない1列の表に変換したいです)。 (試したこと) (1)vlookup関数を使うために、日付の横に検索列を作ってもみましたが、同じ行に複数の抜き出すべくものがあると、 if関数のネストをいれるにも「if(c5="","",vlookup(v5,b5:r10,2,fasle)」みたくやってみましたが、c5までは取り出せても、 d5,e5,f5・・・と右にずらしていく関数式が思い当たりません。 (2)種類、数量データ入力されている全てのセルの横に(1.2.3.4.5.6.7.8.9.・・・)と数字をいれて検索列をつくり、vlookupとmatch関数の 組み合わせも試しましたが、vlookup関数の性質上、複数列に検索値(「vlookup(検索値,範囲,列番号,検索の型)」)が存在しているとこれも出来ず。 説明が不十分な点もあると思いますが、よろしくお願いいたします。もし、VBAでなければ難しいとのことでしたら、どのようなVBAを組めばいいかもお願いいたします。

専門家に質問してみよう