Googleスプレッドシートで半角0.5、全角1文字でカウントする関数

半角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文字をして値を返すことができる。
Googleスプレッドシートで半角0.5、全角1文字でカウントする関数

String.prototype.charCodeAt() - JavaScript | MDN

Googleスプレッドシートで半角0.5、全角1文字でカウントする関数のサンプル