質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

6848閲覧

スプレッドシートで複数シートにわたって組み合わせを作成し、値を計算したい

退会済みユーザー

退会済みユーザー

総合スコア0

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2017/08/14 06:51

■やりたいこと
3つのシートに同じフォーマットで書かれているデータがあり
それらの組み合わせを生成して、値を計算したいと思っています。

…多分言葉で書いてもわからないと思うので、図を参照していただければ幸いです。

<シートα>
||列1|列2|列3|列4|列5|
|:--|:--:|--:|:--|:--:|
|タイプA|3|0|10|0|6|
|タイプB|0|0|0|0|15|
|タイプC|0|5|3|0|6|

<シートβ>
||列1|列2|列3|列4|列5|
|:--|:--:|--:|:--|:--:|
|タイプD|1|0|4|3|5|
|タイプE|0|2|2|0|5|
|タイプF|0|1|3|4|6|

<シートγ>
||列1|列2|列3|列4|列5|
|:--|:--:|--:|:--|:--:|
|タイプG|3|12|0|0|0|
|タイプH|0|0|0|2|24|
|タイプI|0|1|3|1|1|

このようなシートがあるとします。
1シートあたりのデータ量は100件前後です。
1シートからは1つのデータしか抜き出さず、全てのパターンを試行し、かつ、各列の値を合算したものを抽出したいです。

希望する成果物としては下記のような形で27通りのデータを生成したいです。
※本番では100×3なので膨大な数字にはなります…
<シートΔ>
|ID|シートα|シートβ|シートγ|列1|列2|列3|列4|列5|
|:--|:--:|--:|:--|:--:|
|1|タイプA|タイプD|タイプG|7|12|14|3|11|
|2|タイプA|タイプD|タイプH|4|0|14|5|35|
|3|タイプA|タイプD|タイプI|4|1|17|4|12|
|4|タイプA|タイプE|タイプG|6|14|6|3|10|

また、この組み合わせの中から、当該する条件の物だけを
別シートに吐き出す、または当該しない組み合わせを消去して行を詰めるなど
方法はなんでもかまわないのですが、その組み合わせを明示できるようにしたいです。

例えば
列1が5以上ならID1,4を
列3が10以上かつ列5が10以上ならID1,2,3を表示する
といった具合です。

この表を生成するところまでは、関数だけでやってこれたのですが
ここから先は関数だけでは難しいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsuemura

2017/08/14 07:18

本番のシートα、シートβ、シートγの件数は固定ですか?可変ですか?
退会済みユーザー

退会済みユーザー

2017/08/14 07:20

コメントありがとうございます。可変が望ましいですが、固定にもできます。(全て0を入力する形になります)
guest

回答2

0

ベストアンサー

SQLで言うところのCROSS JOINをやりたいということだと思いますので、
2つのリストの直積を求めるサンプルを作りました。

=arrayformula({ transpose( split( join( char(9), rept('シートβ'!A2:A4&char(9),rows('シートβ'!A2:A4)) ), char(9) ) ), transpose( split( rept( join( char(9), 'シートα'!A2:A4 )&char(9), rows('シートβ'!A2:A4) ),char(9) ) ) })

こちらのコードを任意のセル(例えば、シートΔ!A1)に貼り付けてください。
結果は下記のようになると思います。

シートαシートβ
タイプAタイプD
タイプAタイプE
タイプAタイプF
タイプBタイプD
タイプBタイプE
タイプBタイプF
タイプCタイプD
タイプCタイプE
タイプCタイプF

あとはVLOOKUPなどで項目の和を求めたり、3シートにアレンジしたりしてみてください。

参考:
Join two columns in Google Sheets

投稿2017/08/15 16:19

tsuemura

総合スコア663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

<シートΔ>から条件に一致する行のみを抽出するには FILTER 関数が使えると思います。

列3が10以上かつ列5が10以上ならID1,2,3を表示する

例えばこの条件を満たす計算式はこのようになります。
(ID の "1" をA1セルとした場合)

=FILTER('シートΔ'!A1:I4,'シートΔ'!G1:G4>=10, 'シートΔ'!I1:I4>=10)

投稿2017/08/23 06:49

rokuni

総合スコア174

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問