Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32 / 12988 ツリー ←次へ | 前へ→

【78946】vlookup,index関数他について vba勉強中 17/3/14(火) 11:44 質問[未読]

【78958】可能な限り正確な仕様を書きます vba勉強中 17/3/15(水) 11:15 発言[未読]

【78958】可能な限り正確な仕様を書きます
発言  vba勉強中  - 17/3/15(水) 11:15 -

引用なし
パスワード
   ▼γ さん:
データベースについての記述です。
start    1    tes    tes    K    tesp    I
start    2    tes    tes    L    tesp    III
start    3    tes    tes    L    tesp    III
1    1    tes    tes    M    tesp    III
1    2    tes    tes    L    tesp    III
2    1    tes    tes    M    tesp    I
2    2    tes    tes    K    tesp    I
2    3    tes    tes    L    tesp    I
3    1    tes    tes    M    tesp    III
4    1    tes    tes    L    tesp    III
4    2    tes    tes    K    tesp    III
end    1    tes    tes    M    tesp    III

1列目は最初と最後は文字列、その間には数字が入ります。ここが変わると挿入先のページがきりかわります。(今回自分は参照していません)
2列目は数列nです。ここに[1]が現れる毎に挿入先のページが変わります。数列nの最大値の数だけ挿入先ページに挿入されることになります。(この例では各ページに3,2,3,1,2,1個挿入されていき、挿入先は6ページとなります。)
3,4列目は今回不要なデータです。
5,7列目が挿入先のどのセルに[1]もしくは[x+1]を入れるか特定することに使われます。挿入先は7列6行が2つ並んでいます。縦に数列n(n<7を想定しています)横にはI〜IVが並んでいます。
6列目では[(他x箇所)]と書かれている場合は挿入先の数字が1ではなくx+1が挿入されます。

なので自分はK,L,Mについてifを用いて3パターン、その中でI〜IVについての5パターンをcaseで分けました。caseの中で6列目に[他x箇所]がある場合についてifを用いています。(他x箇所)について出現する位置は不定であるのでまず場所をinstrで特定し、特定した場所からmidで抜き出すようにしました。

その前に数列nについての最大値を求めています。最大値分挿入を繰り返したら次のページに進むようにしたつもりです。
また挿入先のテンプレートが7行までしかないのでひとまず7行以下であることをcountifで確認しています。実際は7行以上になることはよくあるのですがその前に詰まってしまったため、ぼろぼろと表現させていただきました。

挿入先について1ページ目と2ページ目との表の間隔は一定ですのでページが切り替わるたびに定数(37行)あけています。

32 / 12988 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free