Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
抽出データをそのまま別シートに貼り付ける関数
投稿日時: 18/05/30 14:46:40
投稿者: you_ku

シートA(以下)に、商品の入庫状況をまとめています。
 
先頭行にはフィルタを設定。
販売日・販売先を指定し、状況を整理しています。
今回の例として、以下を指定しています。
 販売日:30-May
 販売先:A
 
なお、シートAはテーブルにはなっておりません。
 
【シートA】

No.__________船名	出荷日	到着日	販売日	申告	数量	梱包	港	販売先
15-8012-90	aaa	9-Dec	21-Jan	30-May	済	100 	バッグ	名古屋	A
15-8012-90	aaa	9-Dec	21-Jan	30-May	済	100 	バッグ	名古屋	A
17-8009-05	ccc	31-Oct	15-Dec	30-May	済	150 	バッグ	横浜	A
17-8012-12	ddd	8-Feb	30-Mar	30-May	済	30 	ドラム	大阪	A

 
 
上記結果を【シートB】に表示させる関数はありますでしょうか?
 
【シートB】
No.__________販売日	販売先	数量
15-8012-90	30-May	A	100 
15-8012-90	30-May	A	100 
17-8009-05	30-May	A	150 
17-8012-12	30-May	A	30 

 
 
当然、シートAで抽出される結果は、販売日・販売先の条件によってバラバラになります。
 ⇒ 販売先がAなら最初に出てくる行は、12行目だけれど、販売先をBでフィルタを掛けると、最初に表示される行は、35行目になる。という意味です。
 
【シートA】で表示されたものを、列を変えてそのまま【シートB】に表示させたいと思っています。
 

回答
投稿日時: 18/05/30 16:00:47
投稿者: Suzu

「フィルター」とは?
 
・オートフィルター
・フィルターオプション
 
どちらでしょう?
 
フィルターオプションなら、別シートへ出力可能ですよね。

回答
投稿日時: 18/05/30 16:02:17
投稿者: Suzu

リンク張るのを忘れました^^;
 
フィルタオプションの抽出結果を別シートに表示する
http://www.moug.net/tech/exopr/0040016.html

回答
投稿日時: 18/05/30 16:19:21
投稿者: Suzu

関数。。。という事は
 
条件を変えたら、その条件に追従し自動的に反映したいという事なのでしょうか。
 
一般機能。。関数を駆使すればもしかしてですが、私では力不足です。
 
メンテナンスできそうもない関数使うなら
クエリや、VBA使ってしまいます。

投稿日時: 18/05/30 16:31:04
投稿者: you_ku

Suzuさん、何度もありがとうございます。
 
フィルターとは、オートフィルター を使っています。
フィルターオプション でも試しましたが、いまいちうまくいかず。
 
仰る通り、『条件を変えたら、その条件に追従し自動的に反映したい』と考えています。
 
カテゴリーが違いますが、クエリや、VBAをここで具体的に教えていただけましたら、大変助かります。

回答
投稿日時: 18/05/30 16:57:15
投稿者: ゆーたん

作業列とSUBTOTAL関数とMATCH関数の一案です。(^_^;)
やり方だけ。エラー処理等はてきとうに。
 
【シートA】    I     J    K     
     1  港▼ 販売先▼    0     
     2 名古屋     A    1     
     3 名古屋     A    2     
     4  横浜     A    3     
     5  大阪     A    4     
                        
【シートB】    A     B    C    D 
     1  連番   match   港 販売先 
     2    1     2 名古屋    A 
     3    2     3 名古屋    A 
     4    3     4  横浜    A 
     5    4     5  大阪    A 
     6    5     6 名古屋    A 
 
シートAのK列作業列として、J列に必ずデータが入っているとして、
K1セルに「0」。
K2 =K1+SUBTOTAL(103,J2)
下フィルコピー。
 
シートBのA列に連番。
B2 =MATCH(A2,シートA!K:K,0)
下フィルコピー。
C2 =INDEX(シートA!I:I,$B2)
たてよこフィルコピー。(ほしい列だけで)
フィルターと行非表示に対応してK列が動き、
結果シートBも動きます。
 
※ほんとはMATCHは二分探索のほうがいいと私は思ってます。
ちょっと参照がややこしくなるので、とりあえず。

回答
投稿日時: 18/05/30 17:03:57
投稿者: んなっと

●シートA
右の方あいているところ(下の例ではK列)に作業列
 
      A   B    C    D    E   F   G    H    I    J  K
1     No 船名 出荷日 到着日 販売日 申告 数量  梱包   港 販売先 列
2 15-8012-90  aaa  9-Dec 21-Jan 30-May  済  100 バッグ 名古屋    A  1
3 15-8012-91  aaa  9-Dec 21-Jan 30-May  済  101 バッグ 名古屋    B  2
4 15-8012-90  aaa  9-Dec 21-Jan 30-May  済  100 バッグ 名古屋    A  3
5 17-8009-05  ccc 31-Oct 15-Dec 30-May  済  150 バッグ  横浜    A  4
6 17-8012-12  ddd  8-Feb 30-Mar 30-May  済  30 ドラム  大阪    A  5
7 17-8012-13  ddd  8-Feb 30-Mar 30-May  済  31 ドラム  大阪    B  6
8 17-8012-14  ddd  8-Feb 30-Mar 30-May  済  32 ドラム  大阪    A  7
 
K2
=SUM(K1,SUBTOTAL(3,A2))
下方向・↓
 
●シートB
 
      A    B   C    D
1     No 販売日 数量 販売先
2 15-8012-90 30-May  100    A
3 15-8012-90 30-May  100    A
4 17-8009-05 30-May  150    A
5 17-8012-12 30-May  30    A
6 17-8012-14 30-May  32    A
 
A2
=IFERROR(INDEX(シートA!$A:$W,MATCH(ROW(1:1),シートA!$K:$K,0),MATCH(A$1,シートA!$1:$1,0)),"")
右方向・→下方向・↓

回答
投稿日時: 18/05/30 23:24:25
投稿者: WinArrow
投稿者のウェブサイトに移動

関数を使用した場合
データ件数の説明がないので、
どの程度影響するかわかりませんが、
抽出を数式(関数を含む)で処理するとなると
一般的に、処理が重くなる、ファイル容量が大きくなる
という傾向にあります。
フィルタオプション操作をマクロ化すると、数式対応の重さを緩和できます。

投稿日時: 18/05/31 11:37:45
投稿者: you_ku

求めるゴールにたどり着けました。
沢山の皆さん、アドバイスありがとうございます!!