Excel VBA質問箱 IV

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

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


13359 / 13646 ツリー ←次へ | 前へ→

【5747】条件分岐、関数? VBA 平りん 03/5/29(木) 13:08 質問
【5753】Re:条件分岐、関数? VBA ichinose 03/5/29(木) 14:57 回答
【5756】Re:条件分岐、関数? VBA Jaka 03/5/29(木) 15:21 回答
【5766】Re:条件分岐、関数? VBA ichinose 03/5/29(木) 16:13 発言
【5767】困惑させて、すみませんでした。 Jaka 03/5/29(木) 16:58 発言
【5765】ありがとうございます、でも 平りん 03/5/29(木) 16:10 お礼
【5769】Re:ありがとうございます、でも ichinose 03/5/29(木) 17:36 回答
【5771】できました、すごい! 平りん 03/5/29(木) 19:01 お礼

【5747】条件分岐、関数? VBA
質問  平りん E-MAIL  - 03/5/29(木) 13:08 -

引用なし
パスワード
   今、仕事上で
IF構文とAND構文を使用したもの
例えば セルA2 B2 C2が
条件123なら セルA1に 100
条件223なら セルB1に 150
条件323なら セルC1に 200
を表示というリンクを張りました
本当は セルA2 B2 C2が
条件123なら セルA1に 100
条件223なら セルA1に 150
条件323なら セルA1に 200
を表示というリンクを張りたかったのですが
一つのセルに結果を表示する関数が
解らなかったです。
今の所、結果は一つしか選べないので(条件からはずれたセルは表示しない "")
セルA1 B1 C1の合計(Σ)で代用しています。
ああ、この結果を元にまたリンクが
飛びますので。
条件分岐の結果を一つのセルにまとめる
関数はあるのでしょうか?
あるいはそのセルにだらだらとIF と ANDを並べるのでしょうか
これこそ、VBAを使用するのでしょうか?

【5753】Re:条件分岐、関数? VBA
回答  ichinose  - 03/5/29(木) 14:57 -

引用なし
パスワード
   ▼平りん さん:
こんにちは。

>今、仕事上で
>IF構文とAND構文を使用したもの
>例えば セルA2 B2 C2が
>条件123なら セルA1に 100
>条件223なら セルB1に 150
>条件323なら セルC1に 200
>を表示というリンクを張りました
>本当は セルA2 B2 C2が
>条件123なら セルA1に 100
>条件223なら セルA1に 150
>条件323なら セルA1に 200
>を表示というリンクを張りたかったのですが
>一つのセルに結果を表示する関数が
>解らなかったです。
>今の所、結果は一つしか選べないので(条件からはずれたセルは表示しない "")
>セルA1 B1 C1の合計(Σ)で代用しています。
>ああ、この結果を元にまたリンクが
>飛びますので。
>条件分岐の結果を一つのセルにまとめる
>関数はあるのでしょうか?
>あるいはそのセルにだらだらとIF と ANDを並べるのでしょうか
IF関数は、使いましたが、3つネストで済みました(もっと他にもあるかも・・)。
セルA1に
「=IF(SUMPRODUCT((A2:C2=INDEX({1,2,3},1,0))*({1,1,1}))=3,100,
IF(SUMPRODUCT((A2:C2=INDEX({2,2,3},1,0))*({1,1,1}))=3,150,
IF(SUMPRODUCT((A2:C2=INDEX({3,2,3},1,0))*({1,1,1}))=3,200,"")))」
でどうでしょうか?

>これこそ、VBAを使用するのでしょうか?
この事例なら、関数で行います。

【5756】Re:条件分岐、関数? VBA
回答  Jaka  - 03/5/29(木) 15:21 -

引用なし
パスワード
   こんにちは。

私も1案、応用が利きにくいけど、A〜C列とつながっているのが原則、姑息?

=IF(COUNTIF(A2:C2,123)=3,100,IF(COUNTIF(A2:C2,223)=3,150,IF(COUNTIF(A2:C2,323)=3,200,"")))

【5765】ありがとうございます、でも
お礼  平りん E-MAIL  - 03/5/29(木) 16:10 -

引用なし
パスワード
   自分の、説明が悪かったかも。
セルA2 B2 C2
に入れる(入力する)条件とは
1とか2とか3という数字は入れますが
それは数値ではなく
セルA2に 1: 日曜日
     2: 月曜日
     3: 火曜日
セルB2に 1: 朝
     2: 昼
     3: 夜
セルC3に 1: 男
     2: 女
     3: 男女
というような意味なんです

条件セルA2 □ 1か2か3を代入
条件セルB2 □ 1か2か3を代入
条件セルC2 □ 1か2か3を代入

その結果
セルA2 1 セルB2 1 セルC2 1
の場合 セル D3 にセルE4(100が記入されている)
の値を表記
セルA2 1 セルB2 1 セルC2 2
の場合 セル D3 にセルF4(150が記入されてる)
ということなんです
今、この結果を表示する
セルD3という場所が一つにできなく
結果を表示する場所を
D3,G3, H3,I3....などと
し、結果は一つですので
D3,G3,H3,I3...
の合計をシグマで別のセルにまとめ
それをもとに又リンクを張っている
しだいであります。
すいません。

【5766】Re:条件分岐、関数? VBA
発言  ichinose  - 03/5/29(木) 16:13 -

引用なし
パスワード
   Jakaさん、平りん さん
こんにちは。

>本当は セルA2 B2 C2が
>条件123なら セルA1に 100
>条件223なら セルA1に 150
>条件323なら セルA1に 200

>私も1案、応用が利きにくいけど、A〜C列とつながっているのが原則、姑息?
>
>=IF(COUNTIF(A2:C2,123)=3,100,IF(COUNTIF(A2:C2,223)=3,150,IF(COUNTIF(A2:C2,323)=3,200,"")))
これって、こういう意味だったんですか?
セルA2、B2、C2に全て123が入っていたら、A1に100
セルA2、B2、C2に全て223が入っていたら、A1に150
セルA2、B2、C2に全て323が入っていたら、A1に200

私、問題の解釈を間違えたかもしれません。
セルA2=1、B2=2、C2=3のとき、A1に100
セルA2=2、B2=2、C2=3のとき、A1に150
セルA2=3、B2=2、C2=3のとき、A1に200
だと思ってましたから・・・・。

【5767】困惑させて、すみませんでした。
発言  Jaka  - 03/5/29(木) 16:58 -

引用なし
パスワード
   やっぱ、ichinoseさんすげーや。
あたしは、国語力が貧相過ぎて全然わからなかったもん。
配列関数も良く解らないし。
ごめんなさ〜い。

【5769】Re:ありがとうございます、でも
回答  ichinose  - 03/5/29(木) 17:36 -

引用なし
パスワード
   平りん さん:
平りんさんが現在されている関数配置とこれから述べる方法とでどちらが良いかは全体像がまだはっきりしないため、わかりませんが、後でなるべく変更しやすい方法を探して下さい。

>その結果
>セルA2 1 セルB2 1 セルC2 1
>の場合 セル D3 にセルE4(100が記入されている)
>の値を表記
>セルA2 1 セルB2 1 セルC2 2
>の場合 セル D3 にセルF4(150が記入されてる)
>ということなんです
>今、この結果を表示する
>セルD3という場所が一つにできなく
>結果を表示する場所を
>D3,G3, H3,I3....などと
>し、結果は一つですので
>D3,G3,H3,I3...
>の合計をシグマで別のセルにまとめ
>それをもとに又リンクを張っている
>しだいであります。
つまり、27個のセルに関数を配置していると言う事ですよね?

以下に述べる方法は、関数を入れるせるは、セルD3ひとつです。
但し、参照表が必要になります。
セルA2、B2、C2がそれぞれ1,1,1のとき、100と言う結果を出すのにセルA2、B2、C2の値から計算で100という結果を導き出せない以上は、参照表をどこかに置かなければなりません。
仮にこの参照表をセルI1からI27に作成するとしましょう。

    I
1  100 a2,b2,c2が 1,1,1のとき
2  150 a2,b2,c2が 1,1,2のとき
3  200 a2,b2,c2が 1,1,3のとき
4  250 a2,b2,c2が 1,2,1のとき
5  300 a2,b2,c2が 1,2,2のとき
6  350 a2,b2,c2が 1,2,3のとき
7  400 a2,b2,c2が 1,3,1のとき
8  450 a2,b2,c2が 1,3,2のとき
9  500 a2,b2,c2が 1,3,3のとき
10  550 a2,b2,c2が 2,1,1のとき
11    ・
12    ・


と、データを配置しておきます。

セルd3には、
「=IF(SUMPRODUCT((A2:C2>=1)*(A2:C2<=3))=3,INDEX(I1:I27,(A2-1)*9+(B2-1)*3+C2,1),"")」
という数式を入れておく。

という方法です。

【5771】できました、すごい!
お礼  平りん E-MAIL  - 03/5/29(木) 19:01 -

引用なし
パスワード
   ありがとうございます。
希望のパターンが出来ました
参照表は作ってありました。
すごいですね。
今、日本語で理解できるよう
考えてます
あれが、こうなってこうだからなんて。。。

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