○第30回目 大きな表の一部抜粋(その3)
さてかなめの処理です。
使う変数を前回から抜き出してきたので、参照してください。
見出し関係の数値です
gyo_m_1=⇒横見出しのはじめの行数
gyo_m_9=⇒横見出しの最後の行数。プラス+1はデータ部のはじめの行数
gyo_m_cnt=⇒横見出しの行数
必要とする縦項目の内容=⇒gyo_midashi(50)
元の表の抜き出す行番号=⇒gyo_no(50)
必要とする横項目の列記号=⇒retu_kigo_zen(50)
概略表での横項目の列記号=⇒retu_kigou_go(50)
必要とする横項目の列番号=⇒retu_no_zen(50)
概略表での横項目の列番号=⇒retu_no_go(50)
概略表の行の数(データ部のみ)=⇒gyo_cnt
概略表の列の数=⇒retu_cnt
今回の処理の手順は次のようになります。
1.見出し部の作成(コピー)
2.データ部の作成
3.罫線の設定
1.見出し部の作成(コピー)
見出し分は全コピーとしました。そして、1行目からのコピーとしました。1行目から行見出しの始まるまでの情報も必要かなと思っています。
コピー元のセル範囲を指定して、貼り付け先を指定してコピーです。
コピー元のセル範囲は、retu_kigou_zen(i)の1からretu_kigou_zen(i)のgyo_m_9となります。
貼り付け先は該当シートのretu_kigou_go(i)の1となります。
(シートの選択を忘れずに。)
コピーの機能をつけて、1からretu_cntまでくりかえします。
範囲の指定は、列記号を持っているので、Range(retu_kigou_zen(i) & 1 ":"……).selectでいいでしょう。
もちろん、Range(Cells(1, retu_no_zen(i)), Cells(……)).Select形式でもいいです。
全コピーは操作マクロの記録でとってください。
=⇒終了
2.データ部の作成
データ部は計算式で持ってきます。セルは横見出しと列は同じですが行が異なります。
計算式は列記号による表記となりますので注意してください。
また、別のシートのものを使うということも注意です。
下の例を見てください。
Cells(gyo_m_9 + j, retu_no_go(i)) = "=" & sh01_name & "!" & retu_kigou_zen(i) & gyo_no(j)
計算式を入れるところは、"cells"で指定します。
シート名の指定は、 sh01_name & "!" となります。
行を埋めてから次の列へということになりますので、二重のfor文となります。
上の計算式では、行の繰り返しに"j"を、列の繰り返しに"i"を使っています。
jは、1からgyo_cntまで、iは、1からretu_cntまで、動かします。
=⇒終了
3.罫線の設定
横見出し部は罫線を含めてコピーしましたので、そのままとします。
データ部は、周囲の罫線、内部の縦線とします。
これは範囲を指定して、
Selection.BorderAround LineStyle:=xlContinuous
Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
となります。
一行目では、周囲の罫線を引きます。
二行目では、内部の縦線を引きます。
三行目では、内部の横線を消します。
データ部の範囲の表記については大丈夫ですよね。
=⇒終了
※列記号を列番号に変換する際に、英字の大文字しか考えていなかったので、小文字で指定すると変換されません。
そこで、指定された列記号に対して次の操作をしてください。
retu_kigou_zen(i) = UCase(retu_kigou_zen(i))
retu_kigou_go(i) = UCase(retu_kigou_go(i))
Ucaseは大文字にする関数です。元が大文字であってもそのままですので、どちらがはいっているかは気にしなくいいです。

0 件のコメント:
コメントを投稿