[[20250901114731]] 『1のときと2のときで、計算した結果を場合分けす』(ぴかちゅ) ページの最後に飛ぶ

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

| 全文検索 | 過去ログ ]

 

『1のときと2のときで、計算した結果を場合分けする』(ぴかちゅ)

お知恵をお貸しください。

A列に書かれている数字( 1 or 2 )のときに、出る数字を変えたいです。

A列に 1 と入力した際は、
C列(16:29)- B列(13:00) 3:29 以下の時は 未入力。
C列(16:30)- B列(13:00) 3:30 以上の時は 1。
C列(17:00)- B列(13:00) 4:00 以上の時は 2。
C列(18:00)- B列(13:00) 5:00 以上の時は 3。

A列に 2 と入力した際は、
C列(15:29)- B列(10:00) 5:29 以下の時は 未入力。
C列(15:30)- B列(10:00) 5:30 以上の時は 1。
C列(16:00)- B列(10:00) 6:00 以上の時は 2。
C列(17:00)- B列(10:00) 7:00 以上の時は 3。

としたいです。
その際の、関数を教えてください。
どうぞよろしくお願いいたします。

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


 XLOOKUP関数のヘルプをみて、検索方法の指定について調べてください。
 そうすると、

 こんな表を作っておくと、便利に使えることが分かると思います。
     E    F     G
 1 3:30	5:30	1
 2 4:00	6:00	2
 3 5:00	7:00	3

 =XLOOKUP(TIMEVALUE(TEXT(C2-B2,"hh:mm")),CHOOSECOLS($E$1:$F$3,$A$1),$G$1:$G$3,"",-1)
 とかになります
 上記の表のセル範囲を使わないで、式に埋め込むと
 =XLOOKUP(TIMEVALUE(TEXT(C2-B2,"hh:mm")),TIMEVALUE(CHOOSECOLS({"3:30","5:30";"4:00","6:00";"5:00","7:00"},$A$1)),{1;2;3},"",-1)
 みたいな感じ
(´・ω・`) 2025/09/01(月) 12:56:58

(´・ω・`)さん

とても分かりやすく教えていただき、誠にありがとうございました!
先ほど試してみたところ、できました!!
仕事で必要だったので、とても助かりました。

本当にありがとうございました!
(ぴかちゅ) 2025/09/01(月) 17:20:48


追伸,(余談)

使わせていただいた関数は、表のセル範囲を使わないで式だけで完結する方にしました!
頂いた関数をそのまま使う方はそれでよかったのですが、それとは別に、時間を変えて区分別けをする必要があり、数字を変えて対応したところ上手くできませんでした。

CHOOSECOLS({"3:30","5:30";"4:00","6:00";"5:00","7:00"},$A$1

の並び順がどうしてこれなのだろうかと、左から小さい順にすると区分が変になるし、CHOOSECOLSの説明を読んでも;の使い方を書いているサイトさんにたどり着かないしで同僚と二人でうんうんと悩んでいました。

が、"3:30","5:30"を「1」 ; "4:00","6:00" を「2」 と ; で分けていることに気づくことができ、無事に区分別けができました。
;の役割を "5:30";"4:00" → "5:30"〜"4:00" という風に範囲として使うという固定概念しかなかったので目からうろこでした。 もっと{1;2;3},をちゃんと見ればよかったと反省しております。

きっとエクセルの上手い方には当然の知識だったのでしょうが、片足の小指しか関わって来なかった自分はとても驚いたのと同時に、感銘を受けました。関数をこうして読み解くことができた瞬間って楽しいですよね。大変勉強になりました。本当にありがとうございました!
(ぴかちゅ) 2025/09/03(水) 09:12:05


 , カンマは列の区切り
 ; セミコロンは行の区切りです

 =ARRAYTOTEXT(セル範囲,1) 
 で配列のテキスト表現を得ることが出来ます
 ただし、時刻のシリアル値の場合は、数値になってしまいます
(´・ω・`) 2025/09/03(水) 09:30:42

 既に指摘がありましたとおりです。以下、余談です。

 別のシートのA1セルに
 ={"3:30","5:30";"4:00","6:00";"5:00","7:00"}
 と入力してみれば、何をしているのか一目瞭然では?(いわゆる定数配列というものでしょうか)

 私は数式よりも、表の形式で視覚化しておいたほうがよいと思いましたが、人それぞれなんですね。

 なお、
      E     F     G
  1    0    0
  2 3:30 5:30    1
  3 4:00 6:00    2
  4 5:00 7:00    3
 とするのが自然かと思いましたが、
 これだと2行目に達しないときに0が表示されてしまうんですね。
 それを回避するために、XLOOKUPの「データがマッチしない」ときに""とするというのを
 利用しているのが芸が細かいなあと思って拝見していました。

(xyz) 2025/09/03(水) 09:47:15


(´・ω・`)さん、ありがとうございます!

 , カンマ と  ; セミコロンでそんな違いがあったのですね。
それを知ると、さらに教えていただいた関数式の理解が深まりました!

また、ARRAYTOTEXT関数も勉強して来ました。
配列を理解するためのツールとしてもとても良いですね!
色々とデータを入れて、遊んでみたいと思います。

関数について知れた喜びと感謝をお伝え出来たらいいなと思って追伸を書きましたが、まさかまた新たに知識を得られるとは思っていませんでした。
以前、別の名前で質問させていただいた時も(´・ω・`)さんに教えていただきすぐに解決したように記憶しています。
いつも本当にありがとうございます。

xyzさんもありがとうございます!
={"3:30","5:30";"4:00","6:00";"5:00","7:00"}
という、関数(英語?)を入れない式をセルに入れて確かめてみるという発想すらない初心者なもので、実際に入力してみて驚きました。
エクセルはああいうこともできるのですね!

今回、表の方を採用しなかった理由としては、私のこんな知識でもまだ周囲と比べると(団栗の背比べですが)ある方なので別の人に下手に数字をいじられないようにしたかったからです(難しい式が入っている方が下手に触られないので)。あと、見た目がスッキリしてビジュがよかったのでこちらにしました!
この判別ファイルを後輩などに継承する時は、表を活用した分かりやすいものにしたいと思います!

(´・ω・`)さんやxyzさん含め、解答者さんたちは本当に素晴らしい知識をお持ちで、助かっております。

本当にありがとうございました!

(ぴかちゅ) 2025/09/03(水) 10:25:53


コメント返信:

[ 一覧(最新更新順) ]


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