[[20251114114328]] 『ドロップダウンリストに表示させる「項目リスト」』(ヤド子) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『ドロップダウンリストに表示させる「項目リスト」作成について』(ヤド子)

桃、林檎、梨など10個以上の項目があります。

例)  桃
   林檎
   梨
   桃/林檎
   桃/梨
   林檎/梨
   桃/林檎/梨

このように、全ての組み合わせリストを作成したいのですが
数が多かったかり、増えたりした時に簡単な作成方法はありますか。

よろしくお願いします。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 求める回答ではないので恐縮です。
 私の思い付きをメモします。

  仮に10個の要素があるとすると、すべて列挙すると2^10=1024個のリストになります。
  これを目視で選択するのはかなり酷な印象です。10個以上だとさらに大変です

  下記のような形式で、
  ・10個の要素をA列に入れ、
  ・10個のなかで入れるべき要素に1を立てて、
  ・結果をC1セルに表示する
  といったことを私なら考えますね。

        A列   B     C
  1     A           C/F/G
  2     B           
  3     C     1     
  4     D           
  5     E           
  6     F     1     
  7     G     1     
  8     H           
  9     I           
  10    J           
  C1セルの数式:   =TEXTJOIN("/",,FILTER(A1:A10,B1:B10=1))
  (1でなく何らかの入力があるものとすると、
                  =TEXTJOIN("/",,FILTER(A1:A10,B1:B10<>"")) ですね)
(xyz) 2025/11/14(金) 12:26:54

一気に計算するのがわからなければ
小分けにしてみてはいかがでしょうか。
ヤド子様の例では、「林檎/梨」が抜けているように見えますが、、、

例えば
A列  |B列     |C列
桃  |桃/林檎   |桃
林檎 |桃/梨    |林檎
梨  |桃/林檎/梨 |梨
          |桃/林檎
          |桃/梨
          |桃/林檎/梨
A列に蜜柑を追加すると
A列は、桃、林檎、梨、蜜柑となり、
B列は、桃/林檎、桃/梨、桃/蜜柑、林檎/梨、林檎/蜜柑、梨/蜜柑、
    桃/林檎/梨、桃/林檎/蜜柑、林檎/梨/蜜柑、桃/林檎/梨/蜜柑となり、
C列は、A列の4行分(蜜柑)の後にB列の桃/林檎から桃/林檎/梨/蜜柑のところまでになり、
C列を入力リストにしたい。。。
※各列の「、」の部分は1行改行と考えてください

上記の例のようなことをしたいのですか?

(匿名) 2025/11/14(金) 12:48:55


 いちおうド直球の回答

 =LAMBDA(list,
    LET(ary,MAKEARRAY(ROWS(list),2^ROWS(list)-1,LAMBDA(i,j,MOD(QUOTIENT(j,2^(i-1)),2))),
        TRANSPOSE(BYCOL(ary,LAMBDA(c,TEXTJOIN("/",,FILTER(list,c))))))
 )(A1:A3)

 私もxyzさんの案がいいとおもいます
 365はチェックボックスが使えて便利ですし
(´・ω・`) 2025/11/14(金) 13:50:09

 # 重なってしまいましたが、折角なのでローテク手法をさらしておきます。
  要素が9種類のものを列挙する例を挙げます。(DEC2BINの制限のため、9個までしかこの方法では実現できません。)

 【使い方】
 ・A1:A9に各要素を入力します。
 ・結果を出力したいセルの先頭に、下記の式を入れて下さい。
   自動的に組み合わせが表示されます。

 =LET(
     ary,A1:A9,
     n,ROWS(ary),
     a,SEQUENCE(2^n,,0,1),
     c,MAP(a,LAMBDA(element,
                 LET(b,DEC2BIN(element,n),
                     d,MAP(SEQUENCE(n,,1),LAMBDA(m,IF(MID(b,m,1)="1",INDEX(ary,m,1),""))),
                     TEXTJOIN("/",TRUE,d)
                 ))),
     SORT(c)
 )

 # 多すぎて選択しにくいことが実感されるのではないではないでしょうか。
 なお、ary,A1:A9 のところを修正して、もっと少なくすることもできます。

(xyz) 2025/11/14(金) 14:06:16


皆様ありがとうございます。
xyz様のおっしゃる通り、目視選択が酷すぎました。
そして匿名様のご指摘通り、抜けも確実に起きていました(汗)

まず、初めに回答いただいた数式を入れてみました。

  C1セルの数式:   =TEXTJOIN("/",,FILTER(A1:A10,B1:B10=1))

D列に結果を表示させるべくD1=C1、D2=C1・・・としたところ
C1が変化すればD1もD2も変化してしまう現象に陥りました。
再度、ご知恵をお借りできますか。
B欄が空欄の時にC1にエラーコードが出ない(空欄になる)
数式もご存知でしたらお願いします。
その他いただいた数式は、これからチャレンジさせていただきます。

(ヤド子) 2025/11/14(金) 14:29:39


 > D列に結果を表示させるべくD1=C1、D2=C1・・・としたところ
 > C1が変化すればD1もD2も変化してしまう現象に陥りました。
 > 再度、ご知恵をお借りできますか。
 おっしゃることが理解しかねています。

 【私の意図の再説明】
 A列   |B列               
 桃    |  1   とすれば、C1セルには 桃/林檎    が表示されますし、
 林檎  |  1
 梨    |  

 A列   |B列               
 桃    |  1   とすれば、C1セルには 桃/林檎/梨  が表示されますし、
 林檎  |  1
 梨    |  1

 A列   |B列               
 桃    |  1   とすれば、C1セルには 桃/梨   が表示されますし、
 林檎  |  
 梨    |  1
 といったように、B列に入れる情報によって、結果がC1に出るので、
 B列の内容を使う人が決めるのです。
 C列に複数の候補が表示されるわけではないのですよ。

 =====================================
 【チェックボックスの利用した方法の説明】(修正改善策の提案)

 (´・ω・`)さんからのご指摘「365はチェックボックスが使えて便利ですし」を使って、
 もう一度説明します。

 "挿入"メニューにある  "コントロール  チェックボックス" というのを利用して、
 B列の各セルにチェックボックスを挿入して下さい。
 そのうえで、D1セルに以下の数式を入れて下さい。これが選択結果です。

      A列     B列    C列      D列
 1    桃      ☑              桃/梨  (D1セルに  =IFERROR(TEXTJOIN("/",TRUE,FILTER(A1:A3,B1:B3)),"")
 2    林檎    □                                と入れておいて下さい。
 3    梨      ☑

 B列のチェックボックスを適宜変更すれば、選択結果であるD1セルの値が変わります。
(xyz) 2025/11/14(金) 16:01:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.