
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセルのdatedif関数を使って...
-
【画像あり】オートフィルター...
-
【マクロ】アクティブセルの時...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】実行時エラー '424':...
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報