アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなリストがあります。
常に一番右にある数量をG列に表示したいのですが、計算式を教えてください。
A列からF列までの範囲の中で一番右の値を表示する計算式は分かるのですが、
その計算式だと数量欄がブランクの時、日にちが表示されてしまいます。

1列におきに範囲指定したいのですが、どうしたらいいですか。


A列  B列   C列   D列  E列   F列  G列
日にち 数量 日にち 数量 日にち 数量  
4/1   50 4/2   60 4/3   100
4/25 90 4/5

宜しくしお願い致します。

A 回答 (2件)

お礼に対するNo.1の回答者さんからの追加回答がされませんね。


> 実際の仕事のファイルでやってみたらうまくいきません。
実際のデータの配置を書かれたほう良いと思いますよ。
No.1にある配列数式の意味が理解できないと、応用できません。

おそらく応用できない部分で理解されていないと思われる関数が、
COLUMN(A2:F2)の部分だと思います。
参照する範囲がA列からでない場合でも、配列の列番号を取得する
COLUMN(A2:F2)を変えると列番号がずれるので、結果が違ってくる
からです。
http://www.excel-list.com/column.html

数式の意味
 {=COLUMN(A2:F2)}
は、「={1,2,3,4,5,6}」を意味します。
もしも2列ずらして
 {=COLUMN(C2:H2)}
にすると、「={3,4,5,6,7,8」になってしまいます。
これだと、INDEX関数での範囲に対する行列の指定がずれるので、
正しい値にならないのです。
この場合、
 =INDEX(C2:H2,MAX(IF((MOD(COLUMN(A2:F2),2)=0)*(C2:H2<>""),COLUMN(A2:F2))))
にすることで、2列のずれも修正されます。
(もちろん、配列数式にしておくことをお忘れなく)
    • good
    • 0
この回答へのお礼

ありがとうございます!!
詳しい解説まで頂きすごく納得しました。
なぜMAX関数なのだろうと思っていたのですが、
列番号の最大値(=一番右のセル)ということですね。
本当に助かりました。ありがとうございます。

お礼日時:2018/04/28 22:58

こんばんは!



一例です。
G2セルに
=INDEX(A2:F2,MAX(IF((MOD(COLUMN(A2:F2),2)=0)*(A2:F2<>""),COLUMN(A2:F2))))

配列数式なのでCtrl+Shift+Enterで確定!(←必須★)し
フィルハンドルで下へコピーしてみてください。

※ エラー処理はしていません。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!!
G2セルに教えて頂いた数式を入れたらできました。
そして下にコピーしたら理想の結果になりました。

しかし。。。実際の仕事のファイルでやってみたらうまくいきません。
4個所ある【A2:F2】を任意の範囲にすればいい気がするのですが、
指定した範囲内の書式の制限等はあるのでしょうか。
ちなみに、日付書式と文字列書式が入っています。
範囲内に計算式が入ってるとできないようですね。

お礼日時:2018/04/26 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!