Excel (一般機能)

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

 
(Windows 10 Home : Excel 2016)
複数のシートから重複のぞいてかぞえたい
投稿日時: 17/01/09 14:07:39
投稿者: toma100

こんにちは、よろしくお願いいたします。
 
別のシートならCOUNTIF関数で数えられるかと思いますが
複数のシートの表をすべて対象にした場合
どうしたら重複除いて数えられるのかわからなくなりました。
よろしく御願いいたします。
 
Sheet1



 
Sheet2



 
Sheet3




 
のように複数シートがあって
上記なら、7件と求めたいです。
よろしくお願いいたします。
実際はもっとシートが多いのです・・

回答
投稿日時: 17/01/09 14:55:09
投稿者: sy

こんにちわ。
 
作業シートに全てのデータをコピペして重複の削除が一番早いと思います。
操作が面倒ならマクロ記録を取れば次からは一瞬で終わるでしょう。
 
 
もし数式で対応するとしたら、1つの作業シートに全てのシートのデータを列挙するとかでしょうか。
(Sheet1のデータはA列、Sheet2のデータはB列にと言う感じで)
全てのデータが1つのシート内にあれば後は出来るのでしたら、これが一番簡単では?

投稿日時: 17/01/09 15:11:49
投稿者: toma100

sy様
 
ありがとうございます!
各シートのデータは更新したり、増えたりするので
1つにまとめずに求められる数式にしたいと考えてます。
よろしくお願いいたします。

回答
投稿日時: 17/01/09 16:13:40
投稿者: sy

toma100 さんの引用:
各シートのデータは更新したり、増えたりするので
1つにまとめずに求められる数式にしたいと考えてます。

 
各シートのデータは最大でどれくらい想定されるんですか?
別に増減には予め多めに参照式を入力しておけば大丈夫じゃないですか。
何故出来ないと思ったんですか?
  
作業シートに列挙してカウントするか、コピペで重複削除以外に簡単には出来る方法はありません。
 
作業シートを使わずに数式で計算は果てしなく無謀な挑戦なので、私にはそこまでする気力は無いのでどうしてもと言うなら他の方の回答をお待ち下さい。
 
作業シートに列挙してカウントか、重複削除をマクロ化ならアドバイス出来ると思います。
 

投稿日時: 17/01/09 17:06:55
投稿者: toma100

sy様
 
色々とありがとうございました<m(__)m>
 
他の方の回答を待ちたいと思います。
よろしくお願いいたします。

回答
投稿日時: 17/01/10 12:08:11
投稿者: んなっと

コピペで一つのシートにまとめるのは面倒なのですか?
 
以下のようにINDIRECT関数を使う方法もあります。
しかし揮発性関数とかいうもので、たくさん使うと再計算で
重くなるなどの欠点があります。下の例ではH列が大問題。
 
 
1)G2から下にシート名一覧
 
東京支店,大阪営業所のようにランダムで変化する場合は
以下の***と***の間の行で書かれた手順が必要です。
 
*************************************************
[数式] [名前の定義]
名前:
SName
参照範囲:
=TRIM(RIGHT(SUBSTITUTE(GET.WORKBOOK(1)&T(NOW()),"]",REPT(" ",100)),100))
 
G2
=IFERROR(INDEX(SName,ROW(1:1)),"")
下方向・↓
 
マクロ有効ブック(*.xlsm)で保存
*************************************************
 
Sheet1,Sheet2や7月,8月などと規則性があるなら、少しだけ簡単な別の方法があります。
 
 
2)F,H,I,J列に以下の数式
 
   F    G  H I J
 1
 2  1 Sheet1 あ 1 7 ←答え
 3  5 Sheet2 い 2  
 4  8 Sheet3 う 3  
 5 12     い 3  
 6       え 4  
 7       あ 4  
 8       か 5  
 9       さ 6  
10       し 7  
11       か 7  
12       あ 7  
13         7
14         7
 
F2
=IF(G1="",IF(G2="","",1),F1+COUNTA(INDIRECT("'"&G1&"'!A:A")))
下方向・↓
H2
=IF(ROW(1:1)>=LOOKUP(10^10,F:F),"",INDIRECT("'"&VLOOKUP(ROW(1:1),F:G,2)&"'!A"&ROW(1:1)-VLOOKUP(ROW(1:1),F:F,1)+1))&""
下方向・↓
I2
=I1+IF(H2="",0,1*(MATCH(H2,H:H,0)=ROW()))
下方向・↓
J2
=LOOKUP(10^10,I:I)
 
 
「各シートのデータ数は少ない」という前提で、
シート数やシート名の変化に自動で対応させたいというのでしたら
ぎりぎり使えるかもしれません。

回答
投稿日時: 17/01/10 13:06:30
投稿者: んなっと

なお、シート名とシート数は変化せず、各シートのデータ数だけが増減する場合は
 
   H
 1  
 2 あ
 3 い
 4 う
 5 い
 6  
 7  
 8  
 9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20 え
21 あ
22 か
......
 
 
H2
=Sheet1!A1&""
下方向・↓
 
H20
=Sheet2!A1&""
下方向・↓
......
 
などと、間に十分な余裕をもってH列にまとめれば簡単です。
I,J列は同じ。あとは不要。

投稿日時: 17/01/10 21:45:39
投稿者: toma100

んなっと様!
 
できました!!
ありがとうございました<m(__)m>
思った通りの集計値を出すことができました。
本当にありがとうございました!