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

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

新規登録して質問してみよう
ただいま回答率
85.46%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

3007閲覧

Excelで複数条件に一致する文字列の結合値を表示したい

repost

総合スコア12

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/07/08 01:39

編集2021/07/08 05:45

A列の文字列が"A会社"かつ、B列の文字列が"BB"かつ、C列の文字列が"CCC"の場合、
完全一致する行のD列の文字列の結合値を表示したいのですが、
INDEX関数やMATCH関数を組み合わせても中々うまくいきません…

ABCDE
会社場所1場所2通貨利用通貨
1A会社BBCCC円ドル
2B会社11AAAドル
3A会社BBCCCドル
4A会社CCCCC
5C会社11BBB
6A会社BBCCC

実現したいこと:
A列B列C列の値がすべて一致した場合、D列の文字列の結合値をE1に表示
※D列はユニークのみ結合

D列が通貨単位の文字列だった場合
"円"
"ドル"
"元"
※上記3種類あった場合

E1のセル表示結果は

E
利用通貨
ドル
円ドル
ドル元
円元
円ドル元

のいずれかをE1表示するような数式にしたいです。

Excelのバージョンは2007なので使える関数も限られています。
どなたかご教示いただけないでしょうか。

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

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

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

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

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

neconekocat

2021/07/08 04:37

ちなみに行数は大量ですか?
repost

2021/07/08 04:42

ありがとうございます。1000行くらいはありますのでできれば(非表示)列などはこれ以上増やしたくないと考えています。
neconekocat

2021/07/08 05:02

ではVBAの使用とかは? 複雑な条件を複数使うならVBA使った方がいいと思いますが。
repost

2021/07/08 05:09

このシートの結果をPythonに持っていくのでできるだけVBAは使いたくないと考えています。Openpyxlでもできそうでしょうか?
guest

回答2

0

ベストアンサー

<追記>
お使いのExcelのバージョンでうまくいくか自信がないですが、
以下のような数式にすれば、ワークの列なしでもいけそうな気がします。
Shift+Cntl+Enterでの確定が必要かも)

Excel

1=IF(SUM((A:A=Sheet1!$A$1)*(B:B="BB")*(C:C="CCC")*(D:D="円")*1)>0,"円","")&IF(SUM((A:A=Sheet1!$A$1)*(B:B="BB")*(C:C="CCC")*(D:D="ドル")*1)>0,"ドル","")&IF(SUM((A:A=Sheet1!$A$1)*(B:B="BB")*(C:C="CCC")*(D:D="元")*1)>0,"元","")

<追記前>
||A|B|C|D|E|F(非表示列)
|:--|:--|:--|:--|:--|
|1 |AA|11|CC|円|=F1|=IF(AND(A1&B1&C1="AABBCC",ISERROR(FIND(D1,F2))),D1,"")&F2
|2|BB|CC|AA|ドル||=IF(AND(A2&B2&C2="AABBCC",ISERROR(FIND(D2,F3))),D2,"")&F3
|3|AA|BB|CC|ドル||=IF(AND(A3&B3&C3="AABBCC",ISERROR(FIND(D3,F4))),D3,"")&F4
|4|AA|BB|CC|円||=IF(AND(A4&B4&C4="AABBCC",ISERROR(FIND(D4,F5))),D4,"")&F5
|5|CC|11|BB|元||=IF(AND(A5&B5&C5="AABBCC",ISERROR(FIND(D5,F6))),D5,"")&F6
|6|AA|BB|CC|元||=IF(AND(A6&B6&C6="AABBCC",ISERROR(FIND(D6,F7))),D6,"")&F7

投稿2021/07/08 04:38

編集2021/07/08 07:34
jinoji

総合スコア4585

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

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

repost

2021/07/08 04:58

ご回答ありがとうございます。円、ドル、元は各1回だけ使用し、「円ドルドルドル元元…」という表示ではなく「円ドル元」「円ドル」「ドル元」「円元」「円」「ドル」「元」という表示結果にしたいと考えています。
jinoji

2021/07/08 05:08

回答を修正しました。 F1セルを下方向にオートフィルすればF2~F6セルの数式が入ります。
repost

2021/07/08 06:01

回答修正ありがとうございました。これで何とかなりそうですね。1点確認できればと思いますが、検索値を別シートの対象セルとしてA列の値と一致した場合を追加する場合はどうなりますでしょうか? 例) 別シート対象セル 'Sheet!A1="A会社" を検索値とする A列が'Sheet!A1と一致した行のB列C列の値がすべて合致した場合、D列の文字列の結合値をE1に表示 条件が足りなかったようで申し訳ございませんが、もし可能であればご教示いただけると助かります。
repost

2021/07/08 09:03

追記の数式で2007でもいけました! Shift+Cntl+Enter は必要でした。ありがとうございました!
guest

0

2007の関数ではきびしそうですね
最新だとconcatとuniqueを絡めれば行けそうな気がします
命題自体E1に何をどう書きたいかもイマイチつたわってきませんが

投稿2021/07/08 01:50

編集2021/07/08 02:05
yambejp

総合スコア115010

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

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

repost

2021/07/08 04:23

E1には、AからC列の複数条件に合致した行のD列の値(これも1つは限らないので)をすべて表示したいということです。数値ならCOUNTIFSでできますが文字列だとどうすれば良いのか悩んでます… concatはconcatenateで代用できるかと思いますが解決に導ける式はありそうでしょうか?
yambejp

2021/07/08 04:25

="円"&"ドル"&"元" ="円"&"ドル" ="円" の意味がわかりませんE1の一つのセルに式が3つとはどういうことでしょう?
repost

2021/07/08 04:31 編集

E1の値でそういう例が考えられるという意味です。分かりづらくて申し訳ございません。。
yambejp

2021/07/08 04:30 編集

結局、結果として「円ドル元」と表示されればいいということですか?
repost

2021/07/08 04:32

その通りです!それができなくて悩んでます。。
neconekocat

2021/07/08 04:40

隠し列作って完全一致したらDコピー E1はconcatenateで隠し列を全部足すとか?
repost

2021/07/08 05:02

隠し列を作るのが近道そうですね。A列の種類だけでも10種類以上はあるのでABC列合わせると相当の隠し列を作る必要は出てくるので可能なら1発でE1に結果を出せるのが理想です。
neconekocat

2021/07/08 05:05

勘違いされてそうですが、jinojiさんの回答のように、隠し列は1つだけです。
repost

2021/07/08 05:15

失礼しました。隠し列は1つですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問