Excel VBA質問箱 IV

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

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


50 / 13006 ツリー ←次へ | 前へ→

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

【78953】Re:vlookup,index関数他について γ 17/3/15(水) 7:21 発言[未読]
【78956】Re:vlookup,index関数他について vba勉強中 17/3/15(水) 10:48 発言[未読]
【78958】可能な限り正確な仕様を書きます vba勉強中 17/3/15(水) 11:15 発言[未読]

【78953】Re:vlookup,index関数他について
発言  γ  - 17/3/15(水) 7:21 -

引用なし
パスワード
   仕様が曖昧です。
>Kに関してはほとんど不要
とか曖昧ですし、ほとんどとは何?
>2~5,8~12列目にはほとんどの場合1が入りますが
その列には、何がどんなルールで入るのか説明されていない。
"ほとんど"ではコードは組めない。

また、"ぼろぼろ"というコードが謙遜なのか本当にぼろぼろなのか
よく見ていないが、要件が不明のなかで、
これを回答者に分析しろというのは酷に過ぎる。

・正確な仕様を説明すること
・具体的な例を示すこと
がなければ、いくら待っていても適切な回答はつきにくいと思います。
一発逆転の関数では対応できない複雑なルールなのでは?

むだな繰り返しが多いとかの指摘はできても、
それが問題を解決するものでもなさそう。

【78956】Re:vlookup,index関数他について
発言  vba勉強中  - 17/3/15(水) 10:48 -

引用なし
パスワード
   ▼γ さん:
>>2~5,8~12列目にはほとんどの場合1が入りますが
>その列には、何がどんなルールで入るのか説明されていない。
>"ほとんど"ではコードは組めない。
これについてですが先ほどの例ですと6列目(実際は14列目)において[他x箇所]と含まれている場合に限りx+1が入りますが、それ以外では1が入ります。

>また、"ぼろぼろ"というコードが謙遜なのか本当にぼろぼろなのか
>よく見ていないが、要件が不明のなかで、
>これを回答者に分析しろというのは酷に過ぎる。
申し訳ありません、切羽詰まりすぎて回答者の方に対する配慮が全く到っておりませんでした。


>・正確な仕様を説明すること
これについては分かるように練って再度投稿したいと思います。
>・具体的な例を示すこと
このことに関しましては先ほどのものでなんとかお願いしたいですが、どうでしょうか?
>がなければ、いくら待っていても適切な回答はつきにくいと思います。
>一発逆転の関数では対応できない複雑なルールなのでは?
複数の条件で特定のセルに挿入したいところであります。
nは任意ですが小さい順に,K,L,M及びI〜IVで挿入先の位置を特定し、挿入します。
それをnが1になるたびに挿入先のページが1ページ進む、ということをしたいです。

仕様について少しでもわかりやすいように練って参ります。

【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行)あけています。

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