Excel (一般機能)

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

 
(Windows 11 Home : Microsoft 365)
数式を短くしたい
投稿日時: 25/07/26 08:31:39
投稿者: toma100

こんにちは、よろしくお願いいたします!
 
3列ごとのデータを作成しています。
 
A  B  C  D  E  F  G   H  I
印    場所    名前    印    場所    名前    印    場所    名前
●    港    あ    ×    野    さ    ●    野    な
×    海    い    ×    山    し    ×    川    に
●    水    う    ●    海    す    ●    里    ぬ
 
条件「●」の名前を1列に縦方向に名前を以下のように抽出したいです
 





 
それで
 
=FILTER(VSTACK(C列,F列,I列),VSTACK(A列,D列,G列)="●")
としたらできたのですが、I列以降もどんどん増えていきます。
増えるたびに列を上記の数式に列を追加して修正するしかないのでしょうか?
よろしくお願いいたします(._.)/
 
 

回答
投稿日時: 25/07/26 10:10:55
投稿者: んなっと

   A   B   C  D   E   F  G   H   I
 1 印 場所 名前 印 場所 名前 印 場所 名前
 2 ●  港  あ ×  野  さ ●  野  な
 3 ×  海  い ×  山  し ×  川  に
 4 ●  水  う ●  海  す ●  里  ぬ
 5                        
 6                        
 7                        
 8                        
 9                        
10                        
11 あ                      
12 う                      
13 す                      
14 な                      
15 ぬ                      
 
A11
=LET(a,A2:BZ4,b,3,c,ROWS(a)*ROUNDUP(COLUMNS(a)/b,0),
d,MAKEARRAY(c,b,LAMBDA(i,j,INDEX(a,MOD(i-1,b)+1,FLOOR(i-1,b)+j))),
FILTER(TAKE(d,,-1),TAKE(d,,1)="●"))
 
※定番の次の式だと失敗
=LET(a,WRAPROWS(TOCOL(A2:BZ4),3),
FILTER(TAKE(a,,-1),TAKE(a,,1)="●"))
 
   A
20 あ
21 な ←順番が違う
22 う ←
23 す
24 ぬ

投稿日時: 25/07/26 10:36:12
投稿者: toma100

んなっと様
 
いつもありがとうございます!
凄〜〜〜〜〜〜〜〜〜い!!!
ありがとうございます(._.)/
 
あと、
excel2021
excel2019
でも別部署でブックを開く必要があるのですが、
このバージョンでの数式は可能でしょうか?
ただ、この場合の数式は
追加を考えずに
=FILTER(VSTACK(C列,F列,I列),VSTACK(A列,D列,G列)="●")
の数式での
excel2021
excel2019
の場合の数式で大丈夫なのですが。。
よろしくお願いいたします( ノД`)

回答
投稿日時: 25/07/26 20:54:56
投稿者: んなっと

とりあえず先ほどと同じ最大範囲A2:BZ4で回答しておきます。
 
=IFERROR(FILTERXML("<y>"&CONCAT(TRANSPOSE(REPT("<x>"&C$2:BZ$4&"</x>",A$2:BX$4="●")))&"</y>","//x["&ROW(A1)&"]"),"")
下方向・↓

投稿日時: 25/07/26 23:23:00
投稿者: toma100

んなっと様
 
ありがとうございます!!
 
しかし、FILTERXML関数の使い方がどうしてもわからず"<y>"とか</x>"で
の意味が、HTMLが難しいです、あほで申し訳ございません!
FILTERXML関数以外のほかの関数では難しいでしょうか?
何度も申し訳ございません(._.)

回答
投稿日時: 25/07/27 05:09:59
投稿者: んなっと

結果はどうでしたか?

投稿日時: 25/07/27 07:44:55
投稿者: toma100

んなっと様
 
おはようございます!
結果は完璧に求められました!!
 
HTMLが難しすぎて・・
FILTERXML関数以外のほかの関数での数式可能でしょうか?( ノД`)
 

回答
投稿日時: 25/07/27 08:00:52
投稿者: んなっと

もっとむずかしくなります。
=IFERROR(INDEX($1:$4,
MOD(AGGREGATE(15,6,100*COLUMN(A:BZ)+ROW($2:$4)/(A$2:BZ$4="●"),ROW(A1)),100),
AGGREGATE(15,6,COLUMN(A:BZ)/(A$2:BZ$4="●"),ROW(A1))+2),"")

回答
投稿日時: 25/07/27 08:03:24
投稿者: んなっと

引用:
FILTERXML関数の使い方がどうしてもわからず"<y>"とか</x>"で
の意味が、HTMLが難しいです、あほで申し訳ございません!
FILTERXML関数以外のほかの関数では難しいでしょうか?

くだらないこと書いていないで、自分で検索して勉強しましょう。

投稿日時: 25/07/27 08:06:08
投稿者: toma100

んなっと様
 
ありがとうございます!!
できました!!!!!
 
HTML、勉強してもわからなくて・・
でも、もっと勉強します(._.)///