• 締切済み

何かいい関数かマクロの作り方を教えてください

仕事で、AccessのデータをExcelに貼り付けて使っています。 Aというオブジェクトは1~31のIDが振れるのですが 途中欠番がある際はその番号を使うというルールになっています。 Aというオブジェクトは、BとCというオブジェクトの先にあり Bは約1000個、Cは9個のデータがあります。 現在は、Bで特定したオブジェクトに、Cの1~9のどれが当てはまるかを調べ そこで出てきたAというオブジェクトが現在何番までIDが振られているか、欠番は何番か を確認し、最終的にAにIDを振っています。 現在、手作業でやっているため、ミスが多いです。 このような作業をAccessもしくは、Excelで何か関数やマクロを組むという作業で 自動化できないものかと悩んでおります。 どなたかご指導願えませんか。

みんなの回答

回答No.4

Excel VBA できっとできそうですが、この説明では何がしたいのか わかりません。 >オブジェクトというのは、IDのある装置でして >Bという装置にはIDがあります。 オブジェクトとか装置とかIDではなくて、「A列のセルには」とか ExcelやAccessの言葉で要求事項をはっきりさせて質問してください。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

「オブジェクト」とか「先にある」の言葉が曖昧なので、具体的な回答はできませんが、アクセスでやるのが簡単だと思います。 さまざまなやり方があると思いますが、私がやるなら、 AのIDを探すファンクションをモジュール上に作ることと、出力用のクエリを一個作ると思います。 ファンクションに関してはBのIDか何かの値を渡して、AのIDを返してもらうものを作ればよいのだと思う。 VB(A)はどの程度わかりますか? ADOは使ったことがありますか?

bistdu
質問者

補足

お答えありがとうございます。 オブジェクトというのは、IDのある装置でして Bという装置にはIDがあります。 それは9個、配下に細分化されます。(C) その先にA という31個IDが振れる構成です。 B(1)-C(1)-A(1)  ...  (2)  (2) (1000)(3) (3)       ...  (4)      (9)  ...           (31) 図にするとこのようになります。 VBAはほとんど分かりません。 GUIで操作できるExcel関数かAccessの操作方法を 教えていただけないでしょうか。       

回答No.2

関数とExcelの機能の範囲でやりますと それぞれシート毎に分けてExcelに格納 >Bで特定したオブジェクトに、Cの1~9のどれが当てはまるかを調べ Lookup関数で規則性に従ってBにCのデータを繋げる >そこで出てきたAというオブジェクトが現在何番までIDが振られているか、欠番は何番かを確認 ID順でソートを掛け、最後の番号と欠番を洗い出す ACCESSであれば、それぞれを繋げ(Union)れば BからAまでつながったレコードになるかと思いますし、ビューにする事も出来たと思いますが 今一つACCESSに詳しくない物で・・・^^;

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

AccessもExcelも、「手順をきっちり書きだすことが出来れば大概の作業は可能」なソフトです。ですので、マクロ・・・というかVBAのコードを書けば「出来ます」 ただ問題は、この「手順」をきっちり書きだすことが出来るかどうかでして、 >Bで特定したオブジェクトに、Cの1~9のどれが当てはまるかを調べ これが例えば B1=Function1(何かの条件) C1(1~9)=Function2(B1) A1(1~31の欠番)=Function3(C1) という様な形の3つの「関数」を定義する必要があるんです。 更に言えば、「Aの使用後、番号をどうやって消すか(欠番の作り方)」や「Bのオブジェクトの決め方」「BのオブジェクトでCが出てこなかった場合の手順」「Aに欠番が無かった場合の手順」「Aに複数の欠番があった場合、どういう順序で番号を振るか」など、決めることが非常に細かく、やまほどあります。 まずこの辺を「初めてのパートの人が、その書類を見ただけで(時間が掛っても)作業が出来るような手順書」を作ってみて下さい。これが出来ないとVBAのコードが書けませんよ。 ちなみにこの「手順書」って、専門用語で言うと「システム設計書」になります・・・。

関連するQ&A

  • マクロの組み方を教えてください

    セルAに1000から8999までの数値があります。 セルAの配下のセルBに1から9までの数値があります。 セルBの配下のセルCに1から31の数値が入れられます。 セルCは最大数31で、現在入っているデータの個数は欠番もあるため データの個数が10個であっても最大の値が10というわけではありません。 欠番のないものには最大数プラス1の値を 欠番のあるものは、その最小の欠番をセルCを参照してセルDに出したいのですが ExcelまたはAccess(2007)でどのようなマクロを組めばいいでしょうか。 現在手動確認でやっているため、時間がかかりかつ、見落としのミスも多いです。 1000-1-1        2        3    →4 を表示させたい。 1000ー2-1        3        5        6    →2を表示させたい。 ご指導いただけないでしょうか。

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • エクセル関数について

    エクセル関数にてご教授していただきたいことがあり質問させて下さい。 【入力データ】 (a)あ,(b)い,(b)う,(a)え,(a)お,(c)か 上記のような入力データ(カンマ区切り)があります。 このデータを 【コンバートデータ】 (a)あ,え,お,(b)い,う,(c)か のように加工したいのです。 マクロでやればといえばそれまでなのですが、エクセル関数にて実装できるか確認したく。。 ご教授お願いいたします。

  • マクロで教えてください。

    4つのエクセルデータ(A,B,C,D)それぞれ内のシート全てを ペイントというエクセルデータの機種マスタというSHEETの右隣以降に移動したい場合の マクロを教えてください。 ちなみに、数式が入っているsheetにはそれぞれ名前が付いています。 A,B,C,Dのデータにはsheet2、sheet3というなにもデータが無いsheetもありますので、 そのsheet2、sheet3は移動したくありません。

  • エクセル初心者です。マクロなのか関数なのか

    エクセル初心者です。マクロ or VBAを使えばいいのか関数なのかわからないです・・・・・ デスクトップにある新しいフォルダという名前の中に50以上のエクセルCSVブックがあります。 これをひとつも展開させずに新しいブックにひとつにまとめたいのですが、最低でもフォルダ内には50~100ぐらいのエクセルのCSVブックがあるので(ひとつひつ展開するのも手間なので)ワンクリックか何かでまとめる方法はないでしょうか?(フォルダ内にある名前は全てばらばらです) Book1.CSV A B C 1 1 1 Book2.CSV A B C 2 2 2 Book3.CSV A B C 3 3 3 例えば上のような3つのブックがあって中には一行目はすべて固定で二行目以降から数字が入っています。 最終的には・・・・ 新しいBook A B C 1 1 1 2 2 2 3 3 3 ↑ 一行目は固定で2行目以降から各ブックに入っている行を追加するだけのようにしたいのです。 こういことはマクロでも可能でしょうか?それとも関数のほうがいいのでしょうか? ご存知であればぜひマクロの登録手順とその方法を教えてください。 いろいろと調べたのですがマクロは書いていた記述をそのまま貼り付けてもうまく動作しなかったんです。 マクロであればその手順まで教えていただけると非常に助かります。 エクセルのverは2003です。よろしくお願いいたします。

  • エクセル関数 マクロ

    EXCELで作ってある表に数字を入力する時、 (例)セルA1⇒B1⇒C1(⇒D1⇒F1)と入力した後エンターキーを押したら、 セルA2⇒B2⇒C2(⇒D2⇒F2)へ、またエンターキーを押したら、 セルA3⇒B3⇒C3(⇒D1⇒F3)と移動する方法(関数?マクロ?!)を教えて下さい。

  • エクセルのマクロからアクセスのマクロ実行命令を出せますか?

    教えてください。 一連の作業をアクセスのマクロとエクセルのマクロを使って作業を完成させました。 まず最初にエクセルのブックを起動し、マクロを実行し作業をさせ、その後にアクセスを起動させ、マクロを実行し、作業ファイルをエキスポートさせ、またエクセルに戻り、エクセルマクロを実行させて作業を関せさせたいと思います。 そこで、エクセルのマクロでアクセスを起動させ、アクセスのマクロを実行させるようなことはできるのでしょうか? よろしくお願いします。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • エクセルマクロを使ってデータを抽出する方法について

    エクセルマクロの操作方法についての質問です。 以下のようなデータがあったとき、ID100のデータのみを抽出して、別のブックにコピーするにはどのようにすればよいでしょうか。 また、A列にあるほかのIDすべてについても同様にファイルを作成したいのですが、効率よい作成方法をご存知の方がいらっしゃればご教示いただけたら幸いです。 よろしくお願い致します。 A列(ID)   B列    C列 100  2007/9/26    A 100  2007/9/27   B 101  2007/9/27   S 101  2007/9/26   S 102  2007/9/27   B 102  2007/9/25   B :    :      : :    :      :

  • wordにexcelデータの流し込み、マクロでできる?

    固定された表様式に400件程のデータを流し込みたいのですが、 Excelのデータをwordで作成した表様式に流し込むことはできるのでしょうか? 表の様式が決まっており、印刷した際の体裁を重視しています。 現在は、そのデータ(string型)を前任者が作成したマクロで、 excelで作成した表様式に流し込んでいるのですが、 データの中にスペースが複数ある場合、文中のスペースの大きさが均等でなくなるなど、印刷の体裁が悪いのです。 (例:1つのセル内に入力されるデータの一例、□はスペースです。 「6月1日□□□□a業務…□□□担当者A 改行  6月2日□□□□b業務…□□□担当者B 改行  6月3日□□□□c業務…□□□担当者C 改行 …」) excelで印刷機能があまりよくないということならば、 wordなら…と思ってexcelデータをwordに流し込む作業を記憶しようと wordマクロをいじってみたのですが、 やり方が間違っているからかうまくいきません。 excelデータをwordの表様式に流し込むのは、無理なのでしょうか? accessでも考えてみたのですが、1つのレコードの項目数が多くレコード毎にデータ量がかなりちがうし、表様式自体も列・行が入り組んでおり、不適当なようです。 うまく説明できておりませんが、 なにかよいアドバイスございましたら、ぜひよろしくお願いします。 なにしろマクロ初心者なので、 わかりやすい説明をしていただけたらありがたいです。

専門家に質問してみよう