[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの抽出』(友紀)
Sheet1に下記のようなデータがあります。Sheet1のA1にB列の数字を
記入すると、Sheet2のB列からI列までの値を表示する方法は
ありますでしょうか。
例えばSheet1のA1の「1000」または「5000」と記入すると、Sheet2のは
下記のように表示したいのです。
(A1で記入した数字がB列で複数行のみ表示、同じ数字がとびとびには存在しません)
「3000」、「4000」のような1行だけは表示しないようにしたいのです。
実際にはB1〜B8000行まで数字があります。
ご教授よろしくお願いいたします。
Sheet1
A B C D E F G H I 1000 1000 A社 1 A 100 あ ア a 1000 2 B 200 い イ b 1000 3 C 300 う ウ c 1000 4 D 400 え エ d 2000 B社 5 E 500 お オ e 2000 6 F 600 か カ f 3000 C社 7 G 700 き キ g 4000 D社 8 H 800 く ク h 5000 E社 9 I 900 け ケ i 5000 10 J 1000 こ コ j 5000 11 K 1100 さ サ k
「1000」の場合
Sheet2
1000 A社 1 A 100 あ ア a 1000 2 B 200 い イ b 1000 3 C 300 う ウ c 1000 4 D 400 え エ d
「5000」の場合
Sheet2
5000 E社 9 I 900 け ケ i 5000 10 J 1000 こ コ j 5000 11 K 1100 さ サ k
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>「3000」、「4000」のような1行だけは表示しないようにしたいのです。
特別扱いする理由が不明ですが、予め COUNTIFで判定すればよいと思われます。
(γ) 2019/11/05(火) 06:14
Sheet2!A1: =IF(COUNTIF(Sheet1!$B$1:$B$11,Sheet1!$A$1)=1,"",IFERROR(INDEX(Sheet1!B$1:B$11,SMALL(IF(Sheet1!$B$1:$B$11=Sheet1!$A$1,ROW($A$1:$A$11),""),ROW(A1))),""))
「Ctrl + Shift + Enter」キーで式を入力します。
式の前後が「{}」で囲まれた配列数式になります。
I列までと下にコピーします。
Sheet2のB2以降に「0」と表示されますから、条件付き書式かゼロサプレス形式の
表示形式を設定してください。
式で対処すると式が長く(現状でも長いですが)なったり、抽出されたデータが
文字列になります。
抽出されたデータがすべて文字列でもいいということでしたら
Sheet2!A1: =IF(COUNTIF(Sheet1!$B$1:$B$11,Sheet1!$A$1)=1,"",IFERROR(INDEX(Sheet1!B$1:B$11,SMALL(IF(Sheet1!$B$1:$B$11=Sheet1!$A$1,ROW($A$1:$A$11),""),ROW(A1)))&"",""))
(メジロ) 2019/11/05(火) 10:01
>同じ数字がとびとびには存在しません ということなら、配列数式なんか使わなくてもできますね。 数式でいいのなら、ですけど。
一応、確認 1)最も多い数字で、Sheet1には何行ぐらいあるんですか?
2)抽出するのは、実際もB列〜I列の8列ですか?
3)Sheet2はどのセルから抽出するんですか? B1セル?
とりあえず以上です (笑) 2019/11/05(火) 11:40
皆さまありがとうございます。
明日、頑張ってやります。
1)最も多い数字で、Sheet1には何行ぐらいあるんですか?・・30行です 2)抽出するのは、実際もB列〜I列の8列ですか?・・・8列です 3)Sheet2はどのセルから抽出するんですか? B1セル?・・・B1セルです
(友紀) 2019/11/06(水) 00:29
=IF(COUNTIF(Sheet1!$B:$B,Sheet1!$A$1)<ROW(A1),"",INDEX(Sheet1!B:B,MATCH(Sheet1!$A$1,Sheet1!$B:$B,0)+ROW(A1)-1))
右、下へコピー。
※表示形式で0値表示なしに設定。 (GobGob) 2019/11/06(水) 07:47
訂正
=IF(OR(COUNTIF(Sheet1!$B:$B,Sheet1!$A$1)=1,COUNTIF(Sheet1!$B:$B,Sheet1!$A$1)<ROW(A1)),"",INDEX(Sheet1!B:B,MATCH(Sheet1!$A$1,Sheet1!$B:$B,0)+ROW(A1)-1)) (GobGob) 2019/11/06(水) 07:49
最大30行×8列ぐらいなら数式でも。
↓ が前提条件です。 >同じ数字がとびとびには存在しません
作業用にセルを2つ使います。 同じ検索を何度もすることを避けるため、です。
どこでもいいですけど、Sheet2のA列が空いているとして、A1セルとA2セルで説明します。 A列ではまずいのなら、J列以降のどこか空いた列で。
■作業セル(Sheet2)
A1 =COUNTIF(Sheet1!B1:B8000,Sheet1!A1) A2 =IF(A1<2,"",MATCH(Sheet1!A1,Sheet1!B1:B8000,0))
■抽出(Sheet2)
B1 =IF(OR($A$2="",$A$1<ROW(A1)),"",INDEX(Sheet1!B$1:B$8000,$A$2+ROW(A1)-1)) I1セルまで右にコピー
C1セルの表示形式〜ユーザー定義 # C1以外の表示形式は「標準」、または数値を桁区切りにしたいのなら希望のものを設定
B1:I1 を下にコピー(余裕を見て40行目ぐらいまで?)
※ROW(A1) の「A1」は、作業セルがA1セルだからではありません。 作業セルがどのセルであろうが、数式を入れるセルがどこであろうが「A1」を変更しないでください。
以上です (笑) 2019/11/06(水) 10:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.