牛、豚、鶏、どれか一つ食べられなくなるとしたら?

Excelを用いて、次のようなシステムを構築することは可能でしょうか

説明
市町村名、人口、面積の各セルには入力規則がつけられており、市町村名にはある地域の全市町村名リストで入力されており、人口には0~1000,1000~5000,5001~10000…のように、ある一定数で区切られ、リストで入力されており、面積も同様に一定の面積毎にリストで区切られているものとする。

質問
人口、面積で何ら入力がなされていないときには、市町村名のセルをクリックすれば全ての市町村名がリストとして表示されるが、人口か面積、もしくは双方に記入がなされた場合は、その人口、面積に該当する市町村のみが市町村名のセルでリストアップされるという機能は、エクセルで実現可能でしょうか。実現可能な場合は、その方法を教えてください。

A 回答 (5件)

過去にドロップダウンリストから更にリストを作成する方法を回答した例を下に示します。

ぜひ参考にしてください。
Sheet1にドロップダウンリストを作るとしてSheet2にはデータベースとして次のようにしてはどうでしょう。
A1セルから下方に日曜日、月曜日、火曜日・・・・と入力します。
A1セルからA7セルを選択してから、「挿入」メニューから「名前」さらに「定義」をクリックして名前の窓に「曜日」と入力してOKします。
次にB1セルから下方には野菜の種類をキャベツ、ホウレンソウなどと入力します。B1セルから野菜が入力されているセル、例えばB20セルまでを選んで「名前」を「日曜日」とします。
C1セルから下方には果物を入力して、名前を「月曜日」にします。
次にSheet1に戻って、例えばB1セルからB10セルまでに曜日のドロップダウンリストを作るとして、B1セルからB10セルを選択してから、「データ」メニューの「入力規則」をクリックし、入力値の種類で「リスト」を、また、元の値には =曜日 と入力します。
これでB1セルからB10の範囲で▼から曜日を選ぶことができます。
次にC1セルからC10の範囲を選択して、同様に入力規則のリストで、元の値には =INDIRECT(B1) と入力します。
これによってB1セルで日曜日を選択すればC1セルでは野菜の種類を選ぶことができます。月曜日では果物の種類が選択できます。
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございます。

自分がしたいと思っていた通りのことができました。
入力しなくてはいけないデータの量が膨大ですので、まだまだ手間がかかりそうです。しかしながら、さしてexcelに詳しくない手前、これはある程度覚悟していたところでして、むしろ手間はかかるんだけど構造は単純という、KURIMITOさんに教えて頂いた方法が自分には適切だと思います。

本当に有難うございます。

お礼日時:2009/09/06 14:04

まず結論から言うと、VBAを使用することにより実現可能です。


私もやりましたが、部品検索システムで、部品名や規格・対象機種などの条件から一定の条件入力を行うことによってその条件に合致する部品名一覧を抽出するというものです。たぶん質問の目的もこれと非常に似ているものと思われます。
しかし、この目的を達成するためには、プログラムのセンスが問われます。他の方への補足も読ませていただきましたが、かなりの情報量のデータベースを持たせるようですね。ですので、生半可なプログラムでは処理速度で大幅に差が出ます(ひどい例だと大方2000倍の差が出た物もあります)。マクロの記録に頼らず直にソースをごりごり書いていけてかつ処理の高速化とデータ・コードの汎用化をかなり気にしているくらいのレベルは最低限必要ではないかと思います。
その条件を満たせたとしたら、一例ですが別シートや別データベースからSQLでデータを引き抜いて結果をVBAで入力規則を編集するということで目的は達成できます。ただし、これ以上の詳細を述べよというととんでもなく長い説明とコードになりますので省略させていただきます。
SQLを使用する場合も普通に判断でごりごりの場合もですがデータベース側の面積や人口はリスト区切りにしなくてもシステム上全く問題ないですよ。
    • good
    • 0
この回答へのお礼

ご回答頂き、ありがとうございます。

私はプログラミングに関する知識を持ち合わせておりませんので、恐らくRandmoizeさんが必要と思われるレベルには達していないと考えます。VBAという単語自体も先ほど検索して初めて知ったという程度のレベルです。

VBA自体に少なからず興味はありますが、これに関して尋ねますのは、ある程度自分で習得を試みた後が相応しいと思いますし、それで初めて意味を成すものだと思いますので、また別の機会に、教えて!googleでお会いする機会がございましたら、ご助力頂ければ幸いと存じ上げます。

今後ともよろしくお願いします。

お礼日時:2009/09/06 14:27

#1のrukukuです。



補足要求です。

まずは具体例を一つ挙げてください。
どこの列に、どのようなデータが入っていて、どのような絞り込みをしたいのかを教えてください。
例が市町村名とか車種とかあいまいな例では「こんな感じ」というアドバイスしかできません。具体例があれば、その具体例に対しては「こうやれば出来ます」というサンプルが作れます。
あとは047y321eさん自身でアレンジしてください。

加えて、047y321eさんのExcelやその他のプログラミングの経験をおしえてください。基礎的なことをまず回答すべきなのか、基礎は出来ているとして応用の部分を回答すべきなのかが異なります。


また、
>オートフィルタではできないように思えます。(#1)
>オートフィルタを今試してみましたが、これを利用して自分の目的の機能を実装させることができないように思えます(#2)
とありますが、ご質問の内容を実現するには、「オートフィルタ」だけでは出来ません。オートフィルタは途中で使うだけです。
単独の機能で出来ない場合でも、複数の機能の組み合わせならば出来ることがあります。

この回答への補足

補足要求を確認いたしました。

データ採集の対象そのものを説明いたします。

まず、データを採集する対象はAlteilというカードゲームで、どのカードがどの頻度で使用されているかを調査するのが目的になります。

Alteilというカードゲームでは、現在1000種類程度のカードが存在しており、これらのカードは、HP,AT,DF,AGi,RNG,LP,LV,属性といった要素で構成されています。

データがどこに入力されているか、というご質問に関しては、現在はデータを入力しておりませんので、最も効率的な入力のされ方がなされており、それはrukukuさんが最も効率的と想定したデータの入力のされかたがなされているものとして考えてください。
現在データが入力されていないのは、実際にこの機能が実現可能かどうかが判断できない時点で、1000枚ものカードのパラメータを、例えコピーアンドペーストであろうとも行うのはリスクが大きく、また入力が非効率的な配置になることを恐れてのことです。

絞り込み方に関しては、Lv,属性,LPという三つの数値を入力した際にこれらすべてに該当するカードが絞り込めるようにしたいと思っています。

Excelやその他のプログラミングの経験に関しては、Excelは最も基本的な操作を講義で習った経験がある程度で、プログラミングに関しては知識がありません。

オートフィルタ機能に関してですが、申し訳ございません。私の勘違いで、rukukuさんの回答が、オートフィルタ機能のみで実装可能という趣旨のものと判断してしまいました。勘違いから、不適切な補足説明をなしたことを深くお詫び申し上げます。

補足日時:2009/09/06 14:28
    • good
    • 0

こんばんは^^ 説明を読むと、今から、各市町村の面積、人口の一覧表を作成するのかなぁ?と思うのですが、質問を読むと、その一覧表は既にできあがっており、データの抽出をしたのかなぁ?と思い、いまひとつ、質問者さんの状況と目的が分かりかねるのですが、『オートフィルタ』ではダメなのでしょうか?検討違いでしたら、ご容赦下さい。

この回答への補足

 目的は、そうですね、機能の名称がわからないので仮にですが、自分は絞り込む機能をエクセルで使用したいのです。単純に、その機能はどうやって使えるのかを知りたいだけで、市町村名でなくとも、お酒、度数、値段や、コーヒー、産地、値段でもかまいませんでした。

 そしてこの機能は、最終的にデータ採集に役立てようと思っています。
 例えば、どの車が多く町中を走っているのか、このデータを採集するとします。一つは、キーボードで記入する方法がありますが、数万単位のデータを採集する際に、これは時間がかかります。自分はマウスクリックですべてを完結させたいと思っています。つまり、車種とか、色とか、メーカーといったキーワードを入力規制のようにマウスクリックで記入したら、自然と車の名前の候補が出てきて、それを選択すればデータを採集できる、これを目指しているのです。

 オートフィルタを今試してみましたが、これを利用して自分の目的の機能を実装させることができないように思えます。というのも、オートフィルタを見ると、その列に全ての項目を記入しておかないといけないからです。これが困るのは、美観を損なうという点と、この機能を縦に並べることができないという点です。想定では、この機能は縦に15セルほど並べることになります。

補足日時:2009/09/05 21:50
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

提示した情報が不十分で要領を得ず、質問の目的と意図を把握し難かったことと存じ上げます。それにも関らず、お時間を割いていただき、ご回答いただけたことに感謝申し上げます。

今後ともよろしくお願いします。

お礼日時:2009/09/06 14:53

こんばんは



実証はしていないので具体的なことまでは書けませんが、マクロ(VBA)を使えば可能です。

手順としては、
1.オートフィルタで該当する市町村を絞り込む
2.オートフィルターで抽出された結果を他の場所にコピーする
 (どこでもいいのですが、専用のシートへコピーするのが一番やりよいかと思います)
3.2でコピーした範囲を入力規則の「リスト」に設定する
となります。

この回答への補足

他の方の補足にも記入いたしましたが、同じ入力規則のセルを縦に並べて使用いたしますので、オートフィルタではできないように思えます。もし他の方法をご存知でしたら、その方法を御教授頂ければ幸いです。

補足日時:2009/09/05 22:15
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございました。

今後とも、よろしくお願い致します。

お礼日時:2009/09/12 17:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報