- 締切済み
データベースの並び替えキーと列の指定方法
シートに売上データ表があります。A列~AG列2行目に列項目、3行目以降にデータが入っています。これを基に並び変えや、データ抽出をしたいのですが、使用目的によって、並び替えキー項目や削除したい列項目が変わってきます。その為、マクロを組んでも、毎回指定した列を変更しなければならず、困っています。例えばA列1行目~C列1行目に列番号(A,D,F)や、列項目名を入力したら、その列を削除したり、その項目名順に並び替えをする様な事は出来ないのでしょか? 検索・抽出では、同じ列項目名+空白1行の表に検索したい条件を入れれば、その都度抽出出来るのですが。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
列削除のVBA A1にBとか1つ入れる場合 Sub test04() Cells(1, Range("a1").Value).EntireColumn.Delete End Sub A1にA,B,Fと入れる場合 Sub test05() MsgBox Worksheets("sheet3").Range("A1").Value x = Split(Worksheets("sheet3").Range("A1").Value, ",") For i = 0 To UBound(x) MsgBox x(i) Cells(1, x(i)).EntireColumn.Delete Next i End Sub 下記でもよさそう。 Sub test06() MsgBox Worksheets("sheet3").Range("A1").Value x = Split(Worksheets("sheet3").Range("A1").Value, ",") For i = 0 To UBound(x) MsgBox x(i) Columns(x(i)).EntireColumn.Delete Next i End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
(1)まあ関数の「か」の字も質問に出てこないので、お分かりかと思いますが、関数でソートや列削除はできません。関数は値しか求められないのです。 (2)残るは手操作による作業ですが、質問に書いてあるようなのは、普通は手操作でやることをエクセルは前提にしています。 何に困っているのか、質問上はっきりしません。 (3)残る方法はVBAです。 >マクロを組んでも、毎回指定した列を変更しなければならず が具体的に判りません >列項目名を入力したら、その列を削除したり、 手操作でやるほうが早いと思いますが。 VBAでもプログラムは簡単です。 >列項目名を入力したら、その項目名順に並び替えをする これもエクセルがウイザード的に、判りやすいダイアログを作ってくれています。 VBAでもプログラムは簡単です。 ソートキー列と削除列の組み合わせの選択を覚えさせて、神経を使わないで やりたいということでしょうか。 VBAプログラムを例示しても、実際のケースに修正する力がないと、できないのと同じになります。もう少し列や項目名をどう指定するのか、その数は、使用頻度はどうなのか、説明が必要でしょう(仕様を練ることが必要)。 >検索・抽出では、同じ列項目名+空白1行の表に検索したい条件を入れれば、その都度抽出出来るのですが これは何のことですか。誰かが関数を作って、現在でできているということ?。 検索は「値」を検索することが多く、関数でできることもあります。 ソートや列削除は値の加工ではないのですから、別物を並べて、一方はできるといわれてもね。
補足
質問がわかりにくかったようで、すみません。 (1)ご指摘の様に関数で出来ないのは承知しています (2)>何に困っているのか、質問上はっきりしません この売上データは全ての元データでして、これを加工修正して必要な資料を作成します。定期形式の資料はマクロを組み込んで必要なデータを取り出せる様にしているのですが、困っているのは乱発的に依頼される資料なのです。形式も定時制もなく、依頼の度に手で必要データを取り出して集計していたのですが、月に違う形式で何件も入ってくると、データ量が膨大な事もありかなりの時間が費やされてしまい、他の業務に支障をきたしてしまいます (3)>マクロを組んでも、毎回指定した列を変更しなければならずが具体的に判りません 例えば、「A列、B列、C列の順に並び替える」或いは 「A列、B列、C列を削除」という特定のセルをマクロで指定しまうと、異なる列の並び替えや削除には指定したセルを変更しないと起動しません。故に、例えばA列1行目等に条件入力出来るようにして、A1のセルに「C」と入力すれば、C列を削除したり、C列を基準に並び替えたりするようなマクロ等はないかと思ったのです。抽出では、1行目に同じ列項目を作成し、2行目に仮にE列にその中で検出したい項目を入れれば、その条件と同じデータを取り出せるマクロが作成できたので、同じような事は可能なのでは、と思った次第です