サンプルの数式は 行列式 ( 配列数式 , CSE数式 ) として入力する必要があります
SheetName : Sheet1
\ |
A |
B |
C |
1 |
日付 |
商品 |
価格 |
2 |
7月1日 |
りんご |
100円 |
3 |
7月2日 |
かき |
400円 |
4 |
7月3日 |
ぶどう |
200円 |
5 |
7月4日 |
すいか |
300円 |
6 |
7月5日 |
みかん |
100円 |
7 |
7月11日 |
ぶどう |
100円 |
8 |
7月13日 |
なし |
100円 |
9 |
7月15日 |
みかん |
200円 |
10 |
7月16日 |
すいか |
300円 |
11 |
7月21日 |
みかん |
100円 |
12 |
7月22日 |
ぶどう |
200円 |
=IF(COUNTIF(Sheet1.$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1.A:A,LARGE(INDEX((Sheet1.$C$1:$C$500=$A$1)*ROW(Sheet1.$C$1:$C$500),),COUNTIF(Sheet1.$C:$C,$A$1)-ROW(A1)+1)),"")
まず行列式 ( 結果が1行 x1列 ) として入力した後
右または下にコピーすると A1
、A:A
が順次更新され。そのセルに合った値になります
行列式
https://help.libreoffice.org/7.3/ja/text/scalc/01/04060107.html
- 関数ウィザード の左下 [ 行列 ] して OK
- 数式編集後 Ctrl + Shift + Enter
等
参考数式
Calcでは同内容の数式は以下のような 行列式 で書くことができます
解りやすくするため、データ範囲に 名前付き範囲 を設定
DATA = $Sheet1.$A:$C (データ範囲)
PRICE = $Sheet1.$C$1:$C$500 (価格範囲)
最大 10件 表示(出力範囲を自動的に伸縮する機能は無いので最大値を決めておく)
=IFERROR(INDEX(DATA,SMALL(IF(PRICE=A1,ROW(PRICE)),ROW(1:10))),"")
この数式は Index関数の仕様が少し異なるため Excel との互換性はありません
Ask_55063_選択価格で列挙.ods (11.7 KB)
参考Ask(複雑そうに見えますが、考え方は大体一緒です)