![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A B C D
1 任意 任意 合格
2 任意 任意 FALSE
3 任意 任意 合格
4 任意 任意 FALSE
PC2台ありますのでEXCEL2003か2007が操作環境です.
上記のようなシートがあった場合に(Dにはif関数が入力されています)別のシートにFALSEの行のみ削除して1行目から詰めて表示させたいのですが,それってどうやったらいいのでしょうか?if関数使うとしても詰めるのはできそうにないし・・・VBAですか?どうしてもわかりませんでしたので教えていただきたいです.よろしくお願いいたします.
No.7
- 回答日時:
これまでの経過を見ていると、エクセルの基本操作を正しく理解できていないような気がします。
まず基本的なことですが、なぜ「FALSE」などと分かりにくい表示になっているのでしょうか?
通常なら、Falseの場合は空白("")を表示するようにしたほうが良いと思うのですが・・・
また例示のデータですが、1行目に項目名があるのでしょうか?
項目名が入っていれば、まず基本操作のオートフィルタで該当データを抽出して、それを別シートに、そのまま(データ範囲を大きめに選択して)コピー貼り付けするのが簡単です。
>表示させたくない条件はFALSEのみなので,オートフィルタでは難しそうです.
オートフィルタの▼をクリックして表示される「オプション」を選択し「False」と「等しくない」条件で抽出します。
>VBAですか?どうしてもわかりませんでしたので教えていただきたいです.
上記の操作を「新しいマクロの記録」でコードを記録します。
2003の場合、「ツール」「マクロ」「新しいマクロの記録」でリスト範囲のセルにカーソルを移動し、項目名を含めたデータ範囲を大きめに選択し(今後のデータの追加に対応できるように)、「データ」「フィルタ」「オートフィルタ」で上記のオプション操作でFalse以外のデータを表示させます。
抽出されたデータを下の空白行を含めて大きめに選択して、「コピー」し、抽出データを表示したいセルに「貼り付け」ます。
最後に「データ」「フィルタ」でフィルタモードを解除すれば(必要なら抽出データシートに移動)、別シートに該当データを表示させることができます。
>最終的にFALSEだった場合には削除して詰めて表示させたいので,オートフィルドラッグが使えません.シンプルに「FALSEの場合表示しない」という関数でもできるのでしょうか?
この意味がよくわからないのですが「合格」以外の値もあるということでしょうか?
その場合は、私の回答の補助列を使うときの関数の場合なら、たとえば以下のように変更します。
=COUNTIF($E$1:E1,"<>False")*(E1<>"")
いずれにしろ、例示のデータは、表のレイアウトを含めて実際のリストに対応したデータにしないと(できる限り実際のデータをコピー貼り付けする)、回答者が混乱するだけでなく数式でも的確な回答ができませんので注意してください。
何度もありがとうございます!なるほど.FALSEは空白にしたほうがいいのですね.マクロも使ってやってみます.
>例示のデータは、表のレイアウトを含めて実際のリストに対応したデータにしないと(できる限り実際のデータをコピー貼り付けする)、回答者が混乱するだけでなく数式でも的確な回答ができませんので注意してください。
この点は非常に納得ができました.いろいろとご迷惑をおかけしました.ありがとうございました.
No.6
- 回答日時:
なぜオートフィルターを利用してできないのか分かりませんが。
。。次のようなことではないのですか?
D列にIFがあり、
条件が真の結果が複数ある、例えば、X,Y,Z
条件が偽の結果は、False
上記で、False以外を別シートに転記する
で、あれば、
(1)表を別シートにコピー、又は、シートごとコピーする
(2)コピーしたシートのD列で、Falseのオートフィルターをかける
(3)抽出されたデータのみ(見出しは除く)選択
> 右クリック
>行の削除
>オートフィルターの解除
これでいいような気もしますが。。。
以上です。
No.5
- 回答日時:
No4ですが、FALSEを表示するのではなく、「合格」を表示したかったのですね。
その場合の一発で表示する数式は以下のように変更する必要があります。
=INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$D$1:$D$10=FALSE)*1000+ROW($A$1:$A$10),),ROW(A1)))&""
補助列を使う場合は元シートのA列に
=COUNTIF($E$1:E1,"合格")
表示したいシートの数式には少し意味のない部分が入っていたので、ついでに修正すると
=IF(MAX(Sheet1!$A:$A)>=ROW(A1),VLOOKUP(ROW(A1),Sheet1!$A:$E,COLUMN(B:B),0),"")
No.4
- 回答日時:
このような場合はオートフィルタを利用するのが基本操作だと思いますが、関数で表示したい場合、表示データ数が少なければ以下のような数式で一発で該当データを表示することができます(元シートがSheet1の場合)。
=INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$D$1:$D$10<>FALSE)*1000+ROW($A$1:$A$10),),ROW(A1)))&""
表示データ数が多い場合は、補助列を使う方法が無難です。
元シートのA列に1行列を挿入し、このA1セルに以下の式を入力して下方向に適当数(今後のデータの増加に対応できるように)オートフィルします(このA列は最終的に非表示にする)。
=COUNTIF($E$1:E1,FALSE)
表示したいシートには以下の式を入力し右方向に4つ、下方向に適当数オートフィルします。
=IF(MAX(Sheet1!$A:$A)>=ROW(A1),VLOOKUP(ROW(A1),Sheet1!$A:$E,COLUMN(Sheet1!B:E),0),"")
No.3
- 回答日時:
Googleででも。
「imogasi方式」で照会すれば、私のこのコーナーに回答した、条件による抜き出し問題が多数出てくる。ぜひそれを参考に。その際他の回答者が回答された、方式回答も出てくる。代表的なものは作業列を使わずSMALL関数などを使うやり方である。式が長いのと、初めての人には式の理解が難しかろう。
関数の組み合わせとしては最難関の1つだろう。
VBAでやれば簡単だが、この同類の質問をする質問者はVBAの経験が無い人が多い。関数では式が複雑になって、抜き出し問題は不得手だと思うのでVBAでやればと思う。関数は即時反応の良い点もある。それだけに、行数が多いと動きが重くなるかも。
「imogasi方式」は作業列を1列使う。そして条件に合う行に、上の行から連番を関数で振る。その連番を元に、他シートなりに、他シートの行番号と関連させて、元データシートのデータを参照してデータを持ってくる。条件に合わないものは、持ってこない。従って結果として、「データを捨てた」ことになる。
元データの連番1 -->他シートの第1行目
元データの連番2 -->他シートの第21行目
・・・
に持ってくる。元シートデータで、連番1、2・・などを探すにはMATCH関数を使う。
No.1
- 回答日時:
D列にFALSEなどのデータがあるのでしょうか。
なお、すべてのデータが2行目から下方にあるとします。そうでしたらE2セルに次の式を入力して下方にオートフィルドラッグします。=IF(A2="","",IF(D2="合格",MAX(E$1:E1)+1,""))
今のシートをシート1としてまとめのシートは次のようにします。
1行目はシート1の1行目と同じにします。
A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR(A$1="",COUNTIF(Sheet1!$E:$E,ROW(A1))=0),"",INDEX(Sheet1!$A:$D,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))
この回答への補足
ありがとうございます!例でやってみたらできました!すごい^^
実際はD列にのみFALSEがあり,FALSEでないデータは1つのセルにIF関数を複数使っていて複数あり,さらに行ごとにIF関数の内容は違い,最終的にFALSEだった場合には削除して詰めて表示させたいので,オートフィルドラッグが使えません.シンプルに「FALSEの場合表示しない」という関数でもできるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) Excelで、あるセルだけ入力させたい、オートフィルターも使わせたい際のシートの保護 2 2023/02/23 15:14
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) Excelの関数について、教えて下さい。 ■実現したいこと 任意の月での合計金額を表示する。 B3に 6 2023/02/27 21:09
- Excel(エクセル) エクセルにて別シートの値を参照したif式で任意のセルと同じ値を結果に反映させたいです 3 2022/06/02 11:34
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
IF関数などを使って条件に合った「行」を削除するような機能はありますでしょうか?
Excel(エクセル)
-
エクセル・条件付で行を削除する方法
Excel(エクセル)
-
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
-
4
【VBA】条件に一致しない行を削除したい
Visual Basic(VBA)
-
5
EXCELのFALSE行削除について
Excel(エクセル)
-
6
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
7
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
8
エクセルで特定の文字が入ってる列を削除方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
Excel関数-文字列で自動作成さ...
-
スプレッドシート、Excelでの数...
-
Excelで50個のセルに同じ文字を...
-
Microsoft Officeの中古は信用...
-
スプレッドシートで使う数式を...
-
エクセルVBA、別ブックへ転記す...
-
エクセルで会社の従業員のデー...
-
エクセルで不等号記号(≠)が上に...
-
エクセルの表で1年間の曜日を...
-
A列とB列を参照してC列に連番を...
-
エクセルの空欄をつめて、次の...
-
エクセルでの特別な文字を上に...
-
エクセルでセルに標準で入力さ...
-
エクセル日付 文字列の関数がエ...
-
エクセル2013で月間勤務表から...
-
エクセルの日付を編集する
-
EXCELの質問です 119から足した...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報