作成日: 2022/12/20 最終更新日: 2023/02/22
文書種別
不具合
状況
回避方法あり
詳細
ブラウザ(※1)の言語をタイ語に設定した場合、VLOOKUP関数とXLOOKUP関数において、"-"と""などの特定の文字列(※2)が同じように扱われるため、下記の現象が発生します。
| 関数 | 動作 |
| VLOOKUP | 第4引数の近似値検索をFalseにすると、検索対象外の空文字列がヒットする |
| XLOOKUP | 何もヒットされず、#N/Aエラーが発生する |
※1.Google Chrome、Microsoft Edge、Mozilla FireFoxで同様の現象を確認しています。
※2.該当の文字列は下記のとおりです。
"", "\b","\t","\n","\f","\r"," ","!","\"","#","%","&","'","(",")","*",",","-",".","/",":",";","?","@","[","\\","]","_","{","}"
【再現手順(VLOOKUP)】
- ブラウザの言語をタイ語に設定する。
- 「-」を検索値としてVLOOKUPを実行する。 例:=VLOOKUP("-",A2:B4,2,FALSE)
(実行結果)日本語では[-]がヒットするが、タイ語では[-]ではなく空文字がヒットする
【再現手順(XLOOKUP)】
- ブラウザの言語をタイ語に設定する。
- 「-」を検索値としてXLOOKUPを実行する。 例:=XLOOKUP("-",A2:A4,B2:B4)
(実行結果)日本語では[-]がヒットするが、タイ語では#N/Aエラーが発生する
回避方法
SpreadJS (Ver.16.0.4)で修正済み。
Ver.16.0.4より前のバージョンでは、以下のソースコードを追加します。
◎サンプルコード
GC.Spread.Common.CultureManager.getCultureInfo().localeCompare = function (strA, strB) {
if (strA && strB) {
let t = strA.localeCompare(strB);
if (strA!=strB && t==0) {
if (strA>strB) {
return 1;
} else {
return -1;
}
}
return t;
} else if (strA) {
return 1;
} else if (strB) {
return -1;
} else {
return 0;
}
}