読者です 読者をやめる 読者になる 読者になる

かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Googleスプレッドシート 関数を含めた複数の値を文字列結合したい。

Spreadsheet Google Drive Tips

計算結果に単位を付け足したりしたいことが割りとあり、そんな時は文字列結合を使います。
例えば下記のようなプロジェクトでの工数管理シートで人日や週何日相当なのかとかを出したいと思います。

A B C D
1 項目 所要時間 人日 備考
2 ミーティング 7:50:52 1
3 デザイン業務 70:54:39 8.9
4 ディレクション業務 35:36:49 4.5
5 新規機能開発 48:56:51 6.1
6 運用業務 6:08:03 0.8
7 問い合わせ対応 3:52:43 0.5
8 173:19:57 N人日 N日相当

ちなみに人日計算は1人日8時間として次の様な計算式で算出しています。

=ROUND( ROUND(VALUE(B1)*24*60) / (8*60), 1)

所要時間(経過時間) × 24 × 60で分に変換し、これを480分(8h × 60)で割っています。

2つ値を文字列結合する関数

「C8のN人日」の部分の表示です。2つの文字列結合はCONCAT関数で実現することができますので、次の様な式で出力することができます。

=CONCAT(SUM(C2:C7), "人日")

CONCAT
CONCAT(値1, 値2)
値1 と値2 には、数値やテキストなど、何らかのスカラー値やスカラー値への参照を指定できます。

3つ以上の値を文字列結合する関数

「D8のN日相当」の様に文字列と文字列の間に計算式が入るような場合、値が3つになるので、CONCAT関数では引数の数が合わないので、=CONCAT("週", SUM(C2:C7), "日相当")としても#N/Aになってしまいます。
3つ以上の値の場合CONCATENATE関数で文字列結合を行うことができます。

=CONCATENATE("週", SUM(C2:C7), "日相当")

CONCATENATE
CONCATENATE(文字列1, [文字列2, ...])

  • 文字列1 - 最初の文字列です。
  • 文字列2 ... - [省略可] - 順番に連結するその他の文字列です。

幅と高さの両方が 1 より大きい範囲を指定すると、セル値は下方向ではなく、横方向に連結されます。つまり、CONCATENATE(A2:B7) は CONCATENATE(A2,B2,A3,B3,... , A7,B7) と同等になります。

CONCATENATE関数は引数に=CONCATENATE(A2:C7)の様な範囲を指定してまとめて結合することもできます。

& 演算子を使う

スプレッドシートは=内で&を使うことで値をいくらでも結合できます。
上記2つは& 演算子を使うを下記のように書き換えることが可能です。

C8のN人日

= SUM(C2:C7) & "人日"

D8のN日相当

= "週" & SUM(C2:C7) & "日相当"

感想

ちょっとした計算に単位をつけるような文字列結合なら & 演算子を使うのが覚えるのも簡単で良さそうです。

スプレッドシートの話ではないのですが、僕はお仕事にかかった時間をtogglというサービスでプロジェクトごとにカテゴリーを分けて、タスク単位で時間を取るようにしています。
f:id:kikiki-kiki:20160526055942p:plain
自営業なので請求や見積もり際に自分で価格交渉する必要があります。
時間を細かく付けておくことで、その価格になる理由を説明しやすくなったり、見積の際には過去の似たプロジェクトでかかった時間を参考に工数や価格を見積もりやすくもなります。

エンジニアにかかわらず薄い本を作る時とかも時間をとっておくとページ数から必要そうな時間を見積もることもできるので、締切までどれくらいヤバイか解るようにもなって便利なのでtogglオススメです👇

Toggl - Free Time Tracking Software


[参考]

ポケット百科 Googleサービス 知りたいことがズバッとわかる本

ポケット百科 Googleサービス 知りたいことがズバッとわかる本