見出し画像

2つの列にデータがある場合、右列のデータを優先して取得する|表計算 関数

2つの列にデータが入っていて、その2列を統合するときに、右側、または左側とどちらか片方の列にあるデータを優先的に採用したい場合に用いる関数です。
Excel、Googleスプレッドシートに使用できます。

どんな時に使う?

A列とB列にデータが入っています。2つの列はところどころに空白のセルもありますし、両方の列にデータが入っている行もあります。

その2列を1列に統合したいとき、A列をB列に単純に重ねることはできませんよね。どちらかの列に入っているデータを優先的に入れたいなと思うときに使えます。

要望内容

代表者一覧表を更新したい。(名前は仮名です)

画像1

B列は今までの人で、C列は今回変更があった部分です。
B列の空白は、そのとおりの空白で(設定甘くてすみません。。)、
C列の空白は変更なし、だからわざわざ記載していません。
と、なっています。

10行くらいならそのまま変更しちゃえばいいですけど、
これが50行くらいとなると「ムムム・・」となりますよね。

関数を使う

式を作る前にどんな式にするかを考えます。
条件がいくつかあるのですが、優先はC列です。
・C列の値をいれてね
・もし、C列に何もなかったら、B列の値を入れてね
となります。

式にすると次のようになります

=IF(論理式,[値が真の場合],[値が偽の場合] ・・・Excel方式

=IF(論理式, TRUE値, FALSE値) ・・・Googleスプレッドシート方式

結果は同じですけど、表現方法が違っているので2つ記載しました。

D4に入る計算式

=IF(C4="",B4,C4)

Excelでの入力の様子

画像2

Googleスプレッドシートでの入力の様子

画像3

そしてすべての行に反映させた結果

画像4

※この計算式の結果でセルは青くなりません。。

自分なりの解釈

・C列の値をいれてね
・もし、C列に何もなかったら、B列の値を入れてね
で、式を考えるのって難しいですよね。
自分の条件を文章にしてその文章を関数にする。
その文章から関数への変換をどれだけ早くできるかでスキルの差が決まるような気がします。

・C列の値を入れる:D4=C4
・もし、C列に何もなかったら、B列の値
 :IF(C4="",B4・・・
先ほどのIF文の式は「=IF(論理式, [値が真の場合] , [値が偽の場合]」で構成されているのでこちらの式に当てはまるように入れ込みます。

IF(論理式 :もしC列に何もなかったら → IF(C4="",
[値が真の場合] :B列の値 → B4
[値が偽の場合] :C列の値 → C4

真や偽に惑わされてばかりの私は四苦八苦です。
論理式に対して正しい答えは真、そうじゃなかったら偽。
こんな感じで理解しています。

メモ

計算結果をずっと流用しない場合はコピーしたのち、「値のみ貼付」で、文字列にしてしまいましょう。

表などは近い列にまとめると思うので、計算結果の列を少し遠くに設定してから、「値のみ貼付」を近いセルに貼るという方式を取っています。

私はこの関数を実際に使っています。
エクセルの「区切り位置」を使用した際、頭に区切り位置で指定した文字列が来たとき、右側の列に値が移動してしまったのを揃えるために使用しています。
主なデータの種類は、URLですね。平均5,000件くらいありますから、手作業で変更していたら心折れますよね。。

さいごに

良いタイトルが見つからず、長いタイトルになってしまいました。
タイトルつけるのは難しいですね。

関数にはルールがあるので、沢山の関数の形を覚えておけると便利です。
また、知っている関数から使えそうなものはないかを考えるのも大切です。

最後までお付き合いありがとうございます。

※この記事はこまかい修正などをする場合があります。
※Excel、スプレッドシート以外では試していません。

この記事が気に入ったらサポートをしてみませんか?