|
▼γ さん:
データベースについての記述です。
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行)あけています。
|
|