【AppSheet】date関数やweekday, switchが上手く機能しない(excelやスプシと違う)場合の対処法|数式の書き方・構文が違う

app sheet アップシート appsheet-prograshi(プロぐらし)-kv AppSheet
記事内に広告が含まれていることがあります。

AppSheetには便利な関数がたくさん用意されています。if文のようにExcelやスプレッドシート(スプシ)などと同じ感覚で使えるものもあります。ですが、構文自体が違うものになっている場合もあります。

例えば、DATEやWEEKDAYなどです。よく使うSWITCHも違っていたりします。

ここでは、DATE, WEEKDAY, SWITCH関数がAppSheetとExcelやスプシでどう違っているか?置き換えるにはどうすればいいか?についてまとめています。


DATE

まずはDATE関数です。結論から言うと、スプレッドシートの場合は引数を「年」「月」「日」で3つとりますが、AppSheetでは1つの引数しかとりません


スプレッドシートの場合

スプシの場合は以下のように使い「年」「月」「日」を指定することで、日付型にして返してくれます。指定する引数は3つです。

DATE(年, 月, 日)


例えば、DATE(2025, 5, 1)とすれば2024/5/1を返してくれます。


AppSheetの場合

AppSheetの場合は指定できる引数は1つで、日付型にして返します

DATE("文字列")

DATE("月/日/年")

DATE(today())
DATE(now())

※月/日/年で指定します。(年/月/日ではありません)
※引数で指定した文字が時間型と認識されない場合は空白を返します(エラーになりません)


DATE("5/1/2025") → 5/1/2025


AppSheetへの変換

数値指定の場合

date(2025,2,1)

date("2/1/2025")


もし、ビューの表示が2/1/2025となる場合はTEXT関数で成形します。

text(date("2/1/2025"),"YYYY/MM/DD")



カラム指定の場合

date(2025,2,1)

  ↓

これを「何月」というカラムと「何日」というカラムの値を用いて表す場合は、concatenate関数でつなげて1つの文字列にします。

date(concatenate([何月],"/",[何日],"/2025")))


もし、ビューの表示が2/1/2025のようになる場合はTEXT関数で成形します。

text(date(concatenate([何月],"/",[何日],"/2025"))),"YYYY/MM/DD")


カラムと数式で指定する場合

date(year(today()),2,1)

  ↓

これを「何月」というカラムと「何日」というカラムの値を用いて表す場合は、concatenate関数でつなげて1つの文字列にします。

date(concatenate([何月],"/",[何日],"/",year(today())))


もし、ビューの表示が2/1/2025のようになる場合はTEXT関数で成形します。

text(date(concatenate([何月],"/",[何日],"/",year(today()))),"YYYY/MM/DD")


(参考)



WEEKDAY

WEEKDAY関数は指定した日付に対する曜日を数値で返す関数です。

スプレッドシートでは引数を2つとることができます。2つ目はオプションで、始まりとなる曜日およびその数値を指定することができます。

一方、AppSheetでは引数は1つしかとれません。何曜日始まりかと開始の数値が固定されています。


スプレッドシートの場合

スプシの場合は第2引数まで指定することができます。

WEEKDAY(日付, [種類])

例えば、次のように2025/2/1(土)指定し、引数を2とした場合は、「6」を返します。(下の表をご参照ください)

WEEKDAY("2025/2/1", 2)



第2引数の指定による違い

第2引数の「種類」は1、2、3の整数を指定することができます。

weekendの第2引数の指定
  1. 日曜日から数え始めて日曜日の値を 1 とする(デフォルト)
  2. 月曜日から数え始めて月曜日の値を 1 とする
  3. 月曜日から数え初めて月曜日の値を 0 とする


表でまとめると以下のようになります。

第2引数の値が「1」の場合

日曜日から数え始めて日曜日の値を 1 とします。これはデフォルト値で、引数を省略したときと同じです。

WEEKDAY(日付)

WEEKDAY(日付, 1)
曜日数値
日曜日1
月曜日2
火曜日3
水曜日4
木曜日5
金曜日6
土曜日7


第2引数の値が「2」の場合

月曜日から数え始めて月曜日の値を 1 とします。私たち日本人に一番なじみが深い形かと思います。

WEEKDAY(日付, 2)
曜日数値
月曜日1
火曜日2
水曜日3
木曜日4
金曜日5
土曜日6
日曜日7


第2引数の値が「3」の場合

月曜日から数え初めて月曜日の値を 0 とします。

WEEKDAY(日付, 3)
曜日数値
月曜日0
火曜日1
水曜日2
木曜日3
金曜日4
土曜日5
日曜日6

(参考)Googleドキュメント WEEDKDAY




AppSheetの場合

AppSheetの場合は日付または日付形式の文字列を指定します。とれる引数は1つのみです。

WEEKDAY(日時)
WEEKDAY("月/日/年")

次のように使います。

WEEKDAY("5/1/2025")

WEEKDAY(TODAY())

2025/5/1は木曜日のため、WEEKDAY(“5/1/2025”)は「5」を返します。

※入力が無効な場合は0を返します。



スプレッドシートのデフォルト(第2引数に1を指定した場合)と同じで、日曜日から数え始めて日曜日の値を 1 とする値を返します。

曜日数値
日曜日1
月曜日2
火曜日3
水曜日4
木曜日5
金曜日6
土曜日7


(参考)AppSheet WEEDKDAY


AppSheetへの変換

関数かつ引数なしは変換不要

スプレッドシートでweekday関数の値を関数でかつ引数なしで使っている場合は、そのままAppSheetで使っても問題ありません。

WEEKDAY(today())

 ↑↓ 同じ

WEEKDAY(today())


文字列は順序を入れ替える

文字列で指定している場合は、日付の順序を入れ替える必要があります。

WEEKDAY("2025/5/1")

  ↓ “M/D/YYY” または ”MM/DD/YYYY” にする

WEEKDAY("5/1/2025")


引数を指定している場合は数値を調整する

引数を指定している場合は数値を加算して、同じ出力になるように調整します。

WEEKDAY("2025/5/1",2)


 ↓

 2025/5/1は木曜日です。引数を2にすると、月曜日から数え始めて月曜日の値を 1 となるため、算出結果は「4」になります。

AppSheetの場合は日曜日から数え始めて日曜日の値を 1 とするため、土曜日は「5」を返します。このため、「-1」して算出結果を調整します。

WEEKDAY("5/1/2025") - 1



SWITCH

SWITCH関数はIFS関数よりも文字数が少なくシンプルにかけるため、スプレッドシートでもAppSheetでも比較的よく使う関数です。

スプレッドシートのSWITCH関数は、設定したケースにどれも該当しなかった場合に表示するデフォルト値(既定値)の指定が任意です。ですが、AppSheetの場合は必須になります


スプレッドシートの場合

スプレッドシートの場合、SWITCHの構文はセル番号で指定する場合か範囲で指定することができます。

セル指定の場合

SWITCH(セル番号, ケース1, 値1, [ケース2, 値2, ...], [既定値])

第1引数に判定対象となる式がきて、ケースと値のセットを記述していきます。一番最後の引数でどのケースにも該当しなかった場合に返す既定値を設定してもいいですし、しなくても問題ありません。

ただし、どのケースにも該当しないという状態を作ってはいけません。

※一致する値が見つからない場合はエラー「#N/A」になります
※ケースは値で指定する必要があります


例えば、R2の値に合わせて結果を変化させる場合(既定値なし)だと以下のようになります。

=switch(R2,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")


範囲(式)で指定する


範囲で指定する場合、結果はリスト形式になります(filter関数と同じです)

SWITCH(範囲, ケース1, 値1, [ケース2, 値2, ...], [既定値])


例えば、判定がAなら合格、Bは追試、それ以外は不合格とする場合は以下のように書きます。

=switch($J$4:$J$9,"A","合格","B","追試","不合格")


(参考)Googleドキュメント SWITCH


AppSheetの場合

AppSheetの場合、一番最後の引数に既定値(デフォルト)を記述することが必須になります。

SWITCH(式, ケース 1, 値 1, [ケース 2, 値 2 ...], 既定値)


式はスプレッドシートと同じく値もとれますが、カラムで指定することが一般的です。

SWITCH([カラム名], ケース 1, 値 1, [ケース 2, 値 2 ...], 既定値)


AppSheetへの変換

例えば、以下のような数式があるとします。

=switch(R2,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")

または、

=switch(R2:R10,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")


これをAppSheetに変換するには、式の部分をカラムにして、末尾にデフォルト値を加えます。

=switch([頻度],"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-", "指定なし")



タイトルとURLをコピーしました