Excel (一般機能)

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

 
(Windows 11 Home : Microsoft 365)
CHOOSEROWS関数で3行ごと抽出したい
投稿日時: 23/01/07 14:47:34
投稿者: toma100

こんにちは、よろしくお願いいたします。
 
A    B  C
50   3  25  =CHOOSEROWS(A1:A8,B1)
100       80
25       120
48            
60            
80            
65            
120            
 
CHOOSEROWS関数を使うと3行目が抽出できますが、
B1の数値を3にしたら、3行ごとに上記のように25、80、120と抽出したいです
B1の数値を5にしたら、5行ごとに抽出したいです。
CHOOSEROWS関数の引数にROW(A1)*3 としてみましたが抽出できなくて。。
CHOOSEROWS関数で●行ごとに抽出するにはどうしたらよいでしょうか?
よろしくお願いいたします(__)
 

回答
投稿日時: 23/01/07 15:00:45
投稿者: メジロ2

2010しか使っていないのでCHOOSEROWS関数は分かりませんが
 
 =CHOOSEROWS(A1:A8,B1)
コピーすることを考慮すると参照形式を変えないといけないのでは?
 
=CHOOSEROWS(A1:A8,$B$1)
 
INDEX関数で対応すると
 
=IFERROR(INDEX($A$1:$A$9,$B$1*ROW(A1)),"")
 

回答
投稿日時: 23/01/07 15:02:38
投稿者: メジロ2

すいません。
CHOOSEROWS関数に関するところは無視してください。

回答
投稿日時: 23/01/07 15:12:02
投稿者: んなっと

FILTERを使ったほうが簡単ですよ。
=LET(r,A1:A8,FILTER(r,MOD(ROW(r),B1)=0))
 
CHOOSEROWSを使うなら、SEQUENCEで3の倍数の配列を作りましょう。
=LET(r,A1:A8,CHOOSEROWS(r,SEQUENCE(ROWS(r)/B1,,B1,B1)))

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

メジロ2様
ありがとうごじます!
INNDEXの数式、ありがとうございました(__)
 
んなっと様
ありがとうございます!
 
簡単な方の
=LET(r,A1:A8,FILTER(r,MOD(ROW(r),B1)=0))
を使ってみたのですが、
25
80
までしか抽出されず、最後の120がどうしても抽出できないのですが。。。

回答
投稿日時: 23/01/07 15:39:04
投稿者: んなっと

A1:A8は行数8ですよ。9行目が存在しないのだから抽出されないのは当然です。
A1:A9に変更しましょう。
 
   A B  C
1  50 3  25
2 100   80
3  25   120
4  48    
5  60    
6  80    
7  65    
8  94    
9 120    

投稿日時: 23/01/07 15:42:18
投稿者: toma100

んなっと様
 
大変申し訳ございません!
行数が間違っていました、
お手数おかけいたしました、いつもありがとうございます(__)