[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『A列のデータの中で、B列にないものを選び出し、C列に反映させる方法』(さーてぃ)
おはようございます。
先日も変な質問をさせていただいた者です。
A列に上の行からデータが入っており、
B列にも似たような(しかし全く同じではない)データが入っているとき、
「A列にあって、B列にない」データだけを選び出して
C列に上の行から反映させていく関数式を考えたいです。
(関数式を入力するのはC列)
できれば、A列と同じ並び順でC列に反映できたら嬉しいです。
A列の中から該当するデータを抜き出して、C列に上の行から詰めて反映される、というのが理想形です。
どなたか知恵をお貸しください。
お願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
このようなデータと結果を求めているとして [A] [B] [C] [1] a a b [2] b c e [3] c d 0 [4] d f 0 [5] e g 0 [6] f h 0 [7] g j 0
お薦めしないけど、1列で済ませたいなら C1=INDEX(A:A,SMALL(IF(ISERROR(MATCH($A$1:$A$7,B:B,0)),ROW($A$1:$A$7),10^5),ROW(A1))) を配列数式で入力する
お薦めはD列を作業列としてD列を用意して D1=IFERROR(MATCH(A1,B:B,0)*10000,ROW()) C1=INDEX(A:A,SMALL(D:D,ROW(A1)))
でいかがですか? (稲葉) 2014/09/16(火) 11:02
別案(ってほどでもありまへんが)
C1 =IFERROR(INDEX(A$1:A$7,SMALL(IF(COUNTIF(B$1:B$7,A$1:A$7)=0,ROW(A$1:A$7)),ROW(A1))),"")
CTRL+SHIFT+ENTER
または
C1 =IFERROR(INDEX(A$1:A$7,SMALL(INDEX(COUNTIF(B$1:B$7,A$1:A$7)*10^16+ROW(A$1:A$7),),ROW(A1))),"")
普通にENTER (GobGob) 2014/09/16(火) 11:11
=IFERROR(INDEX($A$1:$A$7,AGGREGATE(15,6,ROW($B$1:$B$7)/(COUNTIF($B$1:$B$7,$A$1:$A$7)=0),ROW(A1))),"")
(wisemac21) 2014/09/16(火) 13:22
[A] [B]
1 a a
2 c b
3 d c
4 g d
5 i f
6 g
7 e
8 i
上記のように、
・A列に入力されたデータは漏れなくB列に反映される
・A列もB列も、どちらも手入力により更新されることがある
・A列に入力されているデータを、B列に手入力することはない
(A列に入力された時点でB列に反映される前提のため)
本当に、全く意味が違いました。すみません。
これで、B列(B1)に入力し、最下行までコピーして機能する関数式を求めております。
もし不足があれば随時 補足したいと思います。
※ g, e, i がずれているのは関係ありません。
(さーてぃ) 2014/09/16(火) 16:00
A列データをB列に反映 = 関数で処理。 B列手入力あり。
・・・ なら VBAだね。 (GobGob) 2014/09/16(火) 16:05
↓ですね。 [[20140908162314]] 『シート1に入力した内容をシート2に反映させる方』(さーてぃー)
もっとイメージの付きやすい例を挙げて説明してもらえると良いんじゃないかと思います。 表が増えますが、時系列で 最初が表1・○○して表2になる・△△にするので表3になる 次に(別パターンとして)◆◆した場合(表4)△△にするので表5になる と言った感じで。
単純に A列に何か入力されたら、その文字をB列の最後に転記する ってだけなら、関数では無理ですが VBAなら可能です。
でも、そんなに単純じゃなさそうに思いますが。 (HANA) 2014/09/16(火) 17:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.