- 締切済み
何かいい関数かマクロの作り方を教えてください
仕事で、AccessのデータをExcelに貼り付けて使っています。 Aというオブジェクトは1~31のIDが振れるのですが 途中欠番がある際はその番号を使うというルールになっています。 Aというオブジェクトは、BとCというオブジェクトの先にあり Bは約1000個、Cは9個のデータがあります。 現在は、Bで特定したオブジェクトに、Cの1~9のどれが当てはまるかを調べ そこで出てきたAというオブジェクトが現在何番までIDが振られているか、欠番は何番か を確認し、最終的にAにIDを振っています。 現在、手作業でやっているため、ミスが多いです。 このような作業をAccessもしくは、Excelで何か関数やマクロを組むという作業で 自動化できないものかと悩んでおります。 どなたかご指導願えませんか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- haichicchi
- ベストアンサー率30% (66/214)
Excel VBA できっとできそうですが、この説明では何がしたいのか わかりません。 >オブジェクトというのは、IDのある装置でして >Bという装置にはIDがあります。 オブジェクトとか装置とかIDではなくて、「A列のセルには」とか ExcelやAccessの言葉で要求事項をはっきりさせて質問してください。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
「オブジェクト」とか「先にある」の言葉が曖昧なので、具体的な回答はできませんが、アクセスでやるのが簡単だと思います。 さまざまなやり方があると思いますが、私がやるなら、 AのIDを探すファンクションをモジュール上に作ることと、出力用のクエリを一個作ると思います。 ファンクションに関してはBのIDか何かの値を渡して、AのIDを返してもらうものを作ればよいのだと思う。 VB(A)はどの程度わかりますか? ADOは使ったことがありますか?
- deltaforce_1
- ベストアンサー率34% (88/255)
関数とExcelの機能の範囲でやりますと それぞれシート毎に分けてExcelに格納 >Bで特定したオブジェクトに、Cの1~9のどれが当てはまるかを調べ Lookup関数で規則性に従ってBにCのデータを繋げる >そこで出てきたAというオブジェクトが現在何番までIDが振られているか、欠番は何番かを確認 ID順でソートを掛け、最後の番号と欠番を洗い出す ACCESSであれば、それぞれを繋げ(Union)れば BからAまでつながったレコードになるかと思いますし、ビューにする事も出来たと思いますが 今一つACCESSに詳しくない物で・・・^^;
- FEX2053
- ベストアンサー率37% (7991/21371)
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のコードが書けませんよ。 ちなみにこの「手順書」って、専門用語で言うと「システム設計書」になります・・・。
補足
お答えありがとうございます。 オブジェクトというのは、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の操作方法を 教えていただけないでしょうか。