
半角0.5、全角1文字でカウントする関数
Googleスプレッドシートを使用していると半角を0.5文字、全角を1文字でカウントしたいことがある。
しかし、Googleスプレッドシートにはそのような関数は存在しない。
LENB関数があるではないかと思う人もいるかもしれないが、LENBだと全角カナと全角カナの1文字を2で返してしまう。
| 文字列 | LENB |
|---|---|
| ハローWorld | 11 |
| ハローWorld | 11 |
そのため、半角0.5、全角1文字でカウントする関数は自分で作成する必要がある。
文字をカウントする関数の作成方法
まずGoogleスプレッドシートのツール => スクリプトエディタを選択する。
スクリプトエディタを開いたら以下のコードを貼り付けて保存すれば半角0.5、全角1文字でカウントするLENC関数が使用できるようになる。
function LENC(str) {
var x = str.replace(/[。-゚]/g, 'x');
var hex = '';
for (var i = 0; i < x.length; i++) {
hex += x.charCodeAt(i).toString(16);
}
return hex.length / 4;
}
コードを解説すると、半角カナは全角カナと区別されないため、すべてxに置換して、文字列の1つずつの文字をcharCodeAt(i).toString(16)でUTF-16の16進数のコードに変換。
これを4で割れば半角0.5、全角1文字をして値を返すことができる。

String.prototype.charCodeAt() - JavaScript | MDN
Googleスプレッドシートで半角0.5、全角1文字でカウントする関数のサンプル

