|
▼ドカ さん:
こんにちは
Sheet2に、列ラベル、行ラベルを記述した形で動作確認OKとのこと、よかったです。
お分かりの通り、このコードは、Sheet1の項目のなかから分析したい項目のみを
Sheet2に書いて、それを集計するというものです。
一方、Sheet1にあるもの全てを集計したいというニーズもあるかもしれません。
様々な方法がありますが、一番手っ取り早いのは、アップしたコードの最初に
Sheet1の項目からSheet2の列ラベル、行ラベルを作り出す部分を追加しておくということでしょうね。
以下をマクロ記録すると、ほとんど、そのまま使えるコードが生成されます。
前トピで申し上げたように、お化粧直し、少なくともSelect/Selection のあたりのお化粧直しを
されたほうがいいと思いますけど、最悪(?)、★注で申し上げるところのみを変更すれば
ちゃんとしたマクロコードとして使うことはできます。
1.Sheet1を選択
2.1行目に行挿入
3.挿入された1行目のA1に、"A"、B1に"B" (文字列は何でもOKです)
4.Sheet2を選択
5.Sheet2のセルを全て選びDeleteキーでクリア
6.Sheet2のA1を選択
7.データーメニューのフィルター->フィルターオプションの設定
(もし、2007以降ならデータタブのフィルターの詳細設定)
8.リスト範囲(L)に、Sheet1のA列を選択していれる
9.指定範囲(O)にチェックして、抽出範囲(T)に、Sheet2のA1を指定
10.重複するレコードは無視(R)にチェックしてOK。
11.フィルーターオプションを選ぶ(7.と同じ操作)
12.リスト範囲(L)に、Sheet1のB列を選択していれる
13.指定範囲(O)にチェックして、抽出範囲(T)に、Sheet2のB1を指定
14.重複するレコードは無視(R)にチェックしてOK。
15.Sheet2のA列を選択して昇順並び替え
16.Sheet2のB列を選択して昇順並び替え
17.Sheet2のB列の2行目(B2)からB列のデータの最後(B●)まで選択してCtrl/C ★注
18.Sheet2のA1を選択して、形式を選択して貼付け、行列を入れ替えるにチェックして実行。
19、Sheet2のA1を選択して、セルの挿入、右方向にシフト
これで、Sheet2に列ラベル、行ラベルができあがります。
上記★注 と記述した17.のみ、B●のセルが固定値になっていますので、これを実際の
最終行番号に直す必要があります。B列の最終行番号の値は
Sheets("Sheet2").Range("B1").end(xldown).Row で求めることができますので、
その値を使ってください。
|
|