[[20220918094537]] 『表の中から特定の行だけ削除して表を作り直したい』(まさ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『表の中から特定の行だけ削除して表を作り直したい』(まさ)

質問させて頂きます

表があります

    A     B              C
1 品名     生産地         ランク
2  製品A    日本             A
3 製品B  カンボジア       C
4  製品C    中国             B
5  製品D    韓国             B
6  製品E    インドネシア     D
7  製品F    アメリカ         A
8  製品G    マレーシア       E
9  製品H    インド           C

そしてE2から下に除外ランクが入力されてます

       E
1  除外ランク 
2      C
3      D
4      E

表のC列にE2:E4(CとDとEの文字)があればその行を削除し、新たな表を作り直したいです
ランクがCの3行目と9行目、ランクがDの6行目、ランクがEの8行目を除いた表を作りたいです
完成した表はこのようになります

    A     B              C
1 品名     生産地         ランク
2  製品A    日本             A
3  製品C    中国             B
4  製品D    韓国             B
5  製品F    アメリカ         A

対象の行を削除して上に詰めた表になります
C列で並び替えて対象の行を削除してますが、関数を使って自動で処理したいです
作業シートや結果を表示させるシートなどを作っても大丈夫です

宜しくお願いします

< 使用 Excel:Office365、使用 OS:Windows10 >


すいません
追記いたします
例えばD列に
「C列にE2:E4(CとDとEの文字)が無ければ1を返す」ということは出来ますでしょうか
その後、そのD列を参照し、別のワークシートに
「D列に1があればA,B,Cのセルを返す」
というような方法で出来るかもしれないと思いました
前半の1を返す部分は手法が分かりませんが、後半のA,B,Cのセルを返す方法はINDEX関数+7MATCH関数、もしくはXLOOKUP関数で出来る気がいたします
前半部分が分かりませんので引き続き宜しくお願い致します
(まさ) 2022/09/18(日) 12:25

 (1) A1セル =Sheet1!A1:C1
 (2) A2セル =FILTER(Sheet1!A2:C9,COUNTIF(Sheet1!E2:E4,Sheet1!C2:C9)=0)

 <Sheet1 シート サンプル>                         <Sheet2 シート 結果図>
 行 __A__ ______B______ ___C___ _D_ _____E_____   行  __A__  ____B____  ___C___
  1 品名  生産地        ランク      除外ランク     1  品名   生産地     ランク 
  2 製品A 日本          A           C              2  製品A  日本       A      
  3 製品B カンボジア    C           D              3  製品C  中国       B      
  4 製品C 中国          B           E              4  製品D  韓国       B      
  5 製品D 韓国          B                          5  製品F  アメリカ   A      
  6 製品E インドネシア  D                      
  7 製品F アメリカ      A                      
  8 製品G マレーシア    E                      
  9 製品H インド        C                      

(半平太) 2022/09/18(日) 12:36


だいぶ時間が経過してしまいましたが上の半平太さんの
(1) A1セル =Sheet1!A1:C1
 (2) A2セル =FILTER(Sheet1!A2:C9,COUNTIF(Sheet1!E2:E4,Sheet1!C2:C9)=0)
で解決はしたのですが、会社のパソコンのエクセルが2016でしてFILTER関数が使えませんでした
エクセルのバージョンを2016とするべきでした
申し訳ありませんが他の方法でお願い出来ますでしょうか
宜しくお願い致します

(まさ) 2022/09/19(月) 14:17


 (1) A1セル =Sheet1!A1
   右にコピー
 (2) A2セル =IF(A1="","",IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW(Sheet1!$J$2:$J$9)/(COUNTIF(Sheet1!$E$2:$E$4,Sheet1!$C$2:$C$9)=0),ROW(A1))),""))
 (3) B2セル =IF(A2="","",INDEX(Sheet1!B:B,AGGREGATE(15,6,ROW($Z$2:$Z$9)/(COUNTIF(Sheet1!$E$2:$E$4,Sheet1!$C$2:$C$9)=0),ROW(A1))))
   右にコピー

 2行目の式を下にコピー

(半平太) 2022/09/19(月) 15:01


 表は本当に3列だけ?
 何行目まであるのかもわかりませんが、とりあえず・・・

 ・元表は Sheet1で、データ範囲は2〜50行目
 ・別シートに抽出(1行目の見出しは入力済み)

 別シート
 A2 =IF(A1="","",IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW($A$2:$A$50)/(COUNTIF(Sheet1!$E$2:$E$4,Sheet1!$C$2:$C$50)=0),ROW(A1)))&"",""))
 右・下コピー

 ■または
 A2 =IF(A1="","",IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW($A$2:$A$50)/(COUNTIF(Sheet1!$E$2:$E$4,Sheet1!$C$2:$C$50)=0),ROW(A1)))&"",""))

 B2 =IF(A2="","",VLOOKUP(A2,Sheet1!A:C,2,FALSE))
 C2 =IF(A2="","",VLOOKUP(A2,Sheet1!A:C,3,FALSE))

 A2:C2 を下コピー
 ※数式を入れるのが何行目からでも ROW(A1)の「A1」を変更しないように

 ■作業列を使ってもいいのなら
 作業列:Sheet1のD列

 D2 =IF(C2="","",IF(COUNTIF($E$2:$E$4,C2)=0,ROW(),""))
 下コピー

 別シート
 A2 =IF(A1="","",IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!$D:$D,ROW(A1))),""))
 右・下コピー
 ※これも ROW(A1)の「A1」を変更しないように

 ところで ↓ はどうなったんですか?
[[20220917170947]]『並び替えで質問です』(まさ)

 同じ人ですよね?
(笑) 2022/09/19(月) 15:37

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.