• 締切済み

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

仕事で、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% (7991/21371)
回答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