Excel VBA質問箱 IV

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

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


385 / 13645 ツリー ←次へ | 前へ→

【80665】条件に合った場合だけ、その行を非表示にしたい ビギナー 19/3/31(日) 17:26 質問[未読]
【80666】Re:条件に合った場合だけ、その行を非表示... マナ 19/3/31(日) 17:37 発言[未読]
【80667】Re:条件に合った場合だけ、その行を非表示... γ 19/3/31(日) 17:52 発言[未読]
【80668】Re:条件に合った場合だけ、その行を非表示... γ 19/3/31(日) 17:55 発言[未読]
【80674】Re:条件に合った場合だけ、その行を非表示... ビギナー 19/4/1(月) 21:30 発言[未読]
【80675】Re:条件に合った場合だけ、その行を非表示... マナ 19/4/1(月) 22:12 発言[未読]
【80676】Re:条件に合った場合だけ、その行を非表示... マナ 19/4/1(月) 22:19 発言[未読]
【80693】Re:条件に合った場合だけ、その行を非表示... ビギナー 19/4/11(木) 10:32 お礼[未読]
【80694】Re:条件に合った場合だけ、その行を非表示... γ 19/4/12(金) 9:07 回答[未読]

【80665】条件に合った場合だけ、その行を非表示に...
質問  ビギナー  - 19/3/31(日) 17:26 -

引用なし
パスワード
   セルA1に「品名」、B1に「値段」、C1に「セール予定」と入力されている。

A2、A3、A4・・・と延々と商品名が記載されている。
B2、B3、B4・・・と所々に「高い」と入力されている。
C2、C3、C4・・・と所々に「あり」と入力されている。

※A列の商品数は増減があるので、範囲は不定になります。それに伴い、B列、C列も不定になります。

もし、A列の商品名おいて、隣接するB列が「高い」もしくはC列が「あり」だったら、
その行を非表示にするにはどういうコードを書けば良いでしょうか?
if or thenを上手く使えばいけそうですが・・。

例1:A123「バッグ」 B123「高い」 C123(未記入)だったら、その行を非表示にする。

例2:A64「スカーフ」 B64(未記入)C64「あり」だったら、その行は非表示にする。

拙い説明で申し訳ありません、ご教授よろしくお願いします。

【80666】Re:条件に合った場合だけ、その行を非表...
発言  マナ  - 19/3/31(日) 17:37 -

引用なし
パスワード
   ▼ビギナー さん:

手作業では、オートフィルタが簡単です。
それをマクロにすることも可能です。

【80667】Re:条件に合った場合だけ、その行を非表...
発言  γ  - 19/3/31(日) 17:52 -

引用なし
パスワード
   >if or thenを上手く使えばいけそうですが・・。
そのとおりです。

(1)非表示にする動作をマクロ記録すれば、非表示にする部分は得られます。
(2)比較するところはそのままですよ。
(3)最終行を求めるのは Cellls(Rows.Count,1).End(xlUp).Row です。
  あとは2行目から最終行までの繰り返しのことろも難しくはないです。
ご自分でトライすることが一番力をつける道です。
「いけそう」で止まっていたらもったいないです。
トライしてみて下さい。
詰まったところがあれば、具体的に質問して下さい。

【80668】Re:条件に合った場合だけ、その行を非表...
発言  γ  - 19/3/31(日) 17:55 -

引用なし
パスワード
   マナさんの発言を見ずに投稿してしまいました。
両方トライするとよいと思います。
たしかに、最短距離はオートフィルタですね。

【80674】Re:条件に合った場合だけ、その行を非表...
発言  ビギナー  - 19/4/1(月) 21:30 -

引用なし
パスワード
   >マナさん、γさん

返信ありがとうございます。
ifを使った方法で試しているのですが、
どういうコードになるのかよく分からないのですよね・・。
ちょっともう少し試してみますが。

【80675】Re:条件に合った場合だけ、その行を非表...
発言  マナ  - 19/4/1(月) 22:12 -

引用なし
パスワード
   ▼ビギナー さん:

B123「高い」だったら、

If Range("B123").Value = "高い" Then
とか
If Cells(123, "B").Value = "高い" Then

が、わかりやすいでしょうか。

【80676】Re:条件に合った場合だけ、その行を非表...
発言  マナ  - 19/4/1(月) 22:19 -

引用なし
パスワード
   ▼ビギナー さん:

B123「高い」、または、C123「あり」だったら、


If Cells(123, "B").Value = "高い" Or Cells(123, "C").Value = "あり" Then

【80693】Re:条件に合った場合だけ、その行を非表...
お礼  ビギナー  - 19/4/11(木) 10:32 -

引用なし
パスワード
   >マナさん

返事ありがとうございました。
また、返信遅くなり申し訳ございません。

マナさんの最初のアドバイス通り、オートフィルタでやってみました。

Rows("1:1").Select

Selection.AutoFilter

With Range("A")
.Autofilter Field:=2, Criteria1=""
.Autofilter Field:=3, Criteria1=""
End with

これで該当する項目があった場合は非表示に出来ました。

取り急ぎ報告まで。

【80694】Re:条件に合った場合だけ、その行を非表...
回答  γ  - 19/4/12(金) 9:07 -

引用なし
パスワード
   【B列が「高い」もしくはC列が「あり」だったら、その行を非表示】
は、
【1.B列が「高い」ではなく、かつ、2.C列が「あり」ではない、ものを抽出する】
と同じことです。

オートフィルタのテキストフィルタにある、「指定の値に等しくない」を使って
指定するとよいと思います。
その動作をマクロ記録すれば、参考となるコードが得られると思います。

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