以下のような設定でvlookupと配列数式とifを組み合わせた場合の結果が異なる(ことがある?)んですが、原因を教えていただけないでしょうか。あと、配列数式のここが便利!(このvlookupの類似機能に限ったことではない)というものがあれば付随して教えてくださると助かります。
A1:A3 に順に1,2,3と(参照される側の)インデックスが入力されている。
B1:B3 はa,b,cと文字が入力されている
C1:C3 には2,2,3と(参照する側の)インデックスが入力されている。
C列のインデックスにより、A列のインデックスに対応するB列の文字列を引いてきたいとき、普通はvlookupで、
<セルD1>=vlookup(C1,A1:B3,2,0)などとすると思います。
これを配列数式を用いて、
<セルD1:D3>= if(C1:C3=A1:A3,B1:B3,0)
として同じことをしようとしても、何故かD1セルのみ=0となってしまいます。何故でしょうか?配列数式にそれほどくわしくありませんが、利用価値が非常に高そうなのでわからないことを解明したいのです。
(sumifもタイトルにいれたのは、B1:B3が文字列ではなく数値ならば、同じことをsumifで表現できるから、それだけの理由です)
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
<セルD1:D3>= {if(C1:C3=A1:A3,B1:B3,0)}
{}の部分は、
if(C1=A1,B1,0)
if(C2=A2,B2,0)
if(C3=A3,B3,0)
の様に展開されて
D1:D3にそれぞれ設定されます。つまり
D1=if(C1=A1,B1,0)
D2=if(C2=A2,B2,0)
D3=if(C3=A3,B3,0)
なので、
結果は、
D1=0
D2=b
D3=c
となります
A1の値を1にしてみたりA2の値を1にしてみたりしてどうなるかみてみるといいかも・
BlUEPIXYさん、
ありがとうございます。完全に勘違いしていたようです。よくわかりました。
このようなvlookupと同様の結果をえるための関数は他に何かあるのでしょうか?何かあれば後学のために教えていただけないでしょうか。
No.4
- 回答日時:
>vlookupと同様の結果をえるための関数は他に何かあるのでしょうか?
matchとindexあるいはoffsetを使ってvlookupと同等の結果が得られると思いますが、手間を考えるとvlookupをそのまま使った方がいいと思うので細部は省きます。
今回の
if(C1:C3=A1:A3,B1:B3,0)
のような形式で、
該当した場合は0以外の数値、そうでない場合は0になるような場合は、
sum(if(C1:C3=A1:A3,B1:B3,0))
(の配列数式)とすることで(配列としての数値が足されるので)
vlookupと同等として使うことができます。
また、sumproductを使えば、配列式を足し算する様な感じで(SHIFT+CTRL+ENTERで配列式として入力しないでも、配列を扱える)使えるので、便利です。
>配列式のここが便利!
まあ、普通ですけど、通常だったら複数のセルが必要な(配列としての分作業用セルが必要となる)ところを1つのセルで済ませられるところですかね。
逆に不便なところは、
入力・編集時にSHIFT+CTRL+ENTERが必要。
範囲に入力したときは、部分だけ変更や削除ができない<当たり前ですけど
どういう風に計算されるのかがわかりにくい。
配列を扱えない関数があることに注意しなければならない(例えば、SUMは配列を扱えるがCONCATENATEは扱えない)とか。
まあ、参考まで。
No.3
- 回答日時:
基本的に配列数式の考えかたを勘違いしているようです。
まず、配列数式で入力する場合は以下のように絶対参照にして、Ctrl+Shift+Enterで確定する必要があります。
= IF($C$1:$C$3=$A$1:$A$3,$B$1:$B$3,0)
この部分の数式だけですとまだ配列しか返していませんのですべてのセルで同じ答えがかえります(1番最初の配列を計算)。
このとき、セルの中では以下のような計算をしています。
IF({FALSE;TRUE;FALSE},{"a";"b";"c"},0)
最終的にはIF関数で以下の列の配列を返しています。
{0;"s";0}
この配列は0、s、0という3つの値が縦に入力されていると同じ状況を意味します(E1:E3にこの数値を入れてある状態)。
したがって、この関数部分は、そのまま答えが返るのではなく、他の関数の検索範囲などとして使用することになります。
No.2
- 回答日時:
>A1の値を1にしてみたりA2の値を1にしてみたりしてどうなるかみてみるといいかも・
は
C1の値を1にしてみたりC2の値を1にしてみたりしてどうなるかみてみるといいかも・
の間違いでした
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報