No.1
- 回答日時:
>列Aと列Bの両方で出てきたもの
B1セルの文字がA列にある場合は B1 なければ空白
=IF(COUNTIF(A:A,B1),B1,"") 下フィルします
>列Aと列Cで出てきたけれど
同じですね(仮にE列を作業列として)
=IF(COUNTIF(A:A,C1),C1,"") 下フィルします
>列Bにはないもの
=IF(COUNTIF(B:B,E1),E1,"") 下フィルします
ではいかがでしょうか。
やってみました.なんとか出来そうです.
データが多いと若干重くなりそうですが,見通しがあかるくなってきました.ありがとうございました.
No.2
- 回答日時:
もう少しA,B、C列のデータをモデル化して、順を追って、質問文に書かないと、回答者読者にはわかり難い。
>列Aと列Bの両方で出てきたもの
共通する文字列は、文字列の一部か、文字列そのもの(全文字)か、も良くわからない。
A列には(製品のコードNo?について)重複出現があるのかも質問に書いてない。
抽出は
フィルタ
フィルタオプション
VBAなど
非関数系利用が望ましい。
ーーー
>列Aと列Bの両方で出てきたもの
作業列を使うなら、A1がB1:B100(B列データ行を100と仮定)でカウント(COUNTIF)して
0ーーーB列に無い
1以上ーーA列とB列に存在する
と判定できるから、1以上の行に上から連番を振って、他シートなどに抜き出しはできる。(WEB・Googleでimogasi方式で照会すれば沢山例が出る)
>Aと列Cで出てきたけれど列Bにはないもの
「Aと列Cで出てきた」は上記で判定し、>列Bにはないものも上記で判定できるので、2つをAND条件で判定すればよい。
この回答への補足
質問内容が分かりにくくてすみません。
列で出てくるものは文字や数値が混じったものとなります。
例)A115, FLAG3, 112Jなど。
共通する文字列は、文字列そのものです。
例)A115とA114は区別する。
重複出現はありません(元データには重複する列データもあるのですが、どうしても抽出式が思いつかなかったので、まずは各々の列中でフィルタをかけて、重複がないように処理をしてから比較しようと考えております)。
列ごとのデータ数はバラバラです。
列A 列B 出力結果
A115 2G A115
A114 3P 3E
FLAG3 A115
3E 542T
567Q 3E
このように出力されるようなものを考えておりますが、なかなかうまくゆきません。
No.3
- 回答日時:
ご質問を種に、MS Queryで遊んでおりました。
下記の様なデータブックを用います。
各列に名前、tableA,tableB,tableCをそれぞれつける
................A...............B...............C
..1.....code_a.....code_b.....code_c
..2..........0001..........0018..........0010
..3.........0002..........0019...........0011
..4.........0003.........0020..........0012
データブックとは別のブックに抽出します。(同じブック内でも可能ですが、ディスク上のファイルから抽出する様な気がするので、その場合は未保存データに要注意)
XL2000の例では、
データ/外部データの取り込み/新しいデータベースクエリ
Excel Files* を選択
カレントフォルダ内のエクセルファイルが表示されるので、
目的のデータファイルを選択
適当なテーブルと列を選び(結局SQLの実行環境としてしか使用しないので)
次へを何度か押して、最後の画面で
Microsoft Queryでデータの表示またはクエリの編集を行う を選択して、完了
Microsoft Queryの画面が表示されるので、SQLのアイコンをクリックして、
表示されるテキストボックスに、SQL文を入力してOKをクリック
クエリを再表示できません、継続しますかと聞いてくるので、気にせずOKをクリック
これで目的のデータが抽出される
ファイル/Microsoft Excelにデータを返す で、出力先セルを指定して、
抽出されたデータを貼り付ける
という手順で抽出出来ました。
>列Aと列Cで出てきたけれど列Bにはないもの
は、次のSQLで良いと思いますが、今晩初めてサブクエリの使い方が分かった様な気がする自分ですので、確信は持てません。
SELECT tableA.code_a
FROM tableA INNER JOIN tableC ON tableA.code_a = tableC.code_c
WHERE (((tableA.code_a) Not In (SELECT tableA.code_a
FROM tableA INNER JOIN tableB ON tableA.code_a = tableB.code_b;)));
サブクエリに用いるSQLは、MS Queryが生成するものを切り貼りできます。
ご参考にはならないかもしれませんが...
No.4ベストアンサー
- 回答日時:
●A案 数式一発で。
同一列内に重複がない、という前提です。
1行目は見出し行として、A2:C999にデータが入っているとすれば、
■A,B列にあり、C列にないもの
D2セルを
=OFFSET($A$1,1/LARGE(INDEX((((ISNA(MATCH($A$2:$A$999,$B$2:$B$999,0))=FALSE)+(ISNA(MATCH($A$2:$A$999,$C$2:$C$999,0))=TRUE))=2)/ROW($A$2:$A$999),),ROW()-1)-1,)
として、#DIV/0が返るまで下方にフィル
以下同様に、
■A,B,C列にあるもの
=OFFSET($A$1,1/LARGE(INDEX((((ISNA(MATCH($A$2:$A$999,$B$2:$B$999,0))=FALSE)+(ISNA(MATCH($A$2:$A$999,$C$2:$C$999,0))=FALSE))=2)/ROW($A$2:$A$999),),ROW()-1)-1,)
■A,C列にあり、B列にないもの
=OFFSET($A$1,1/LARGE(INDEX((((ISNA(MATCH($A$2:$A$999,$B$2:$B$999,0))=TRUE)+(ISNA(MATCH($A$2:$A$999,$C$2:$C$999,0))=FALSE))=2)/ROW($A$2:$A$999),),ROW()-1)-1,)
■B,C列にあり、A列にないもの
=OFFSET($B$1,1/LARGE(INDEX((((ISNA(MATCH($B$2:$B$999,$A$2:$A$999,0))=TRUE)+(ISNA(MATCH($B$2:$B$999,$C$2:$C$999,0))=FALSE))=2)/ROW($B$2:$B$999),),ROW()-1)-1,)
■A列にあり、B,C列にないもの
=OFFSET($A$1,1/LARGE(INDEX((((ISNA(MATCH($A$2:$A$999,$B$2:$B$999,0))=TRUE)+(ISNA(MATCH($A$2:$A$999,$C$2:$C$999,0))=TRUE))=2)/ROW($A$2:$A$999),),ROW()-1)-1,)
■B列にあり、A,C列にないもの
=OFFSET($B$1,1/LARGE(INDEX((((ISNA(MATCH($B$2:$B$999,$A$2:$A$999,0))=TRUE)+(ISNA(MATCH($B$2:$B$999,$C$2:$C$999,0))=TRUE))=2)/ROW($B$2:$B$999),),ROW()-1)-1,)
■C列にあり、A,B列にないもの
=OFFSET($C$1,1/LARGE(INDEX((((ISNA(MATCH($C$2:$C$999,$A$2:$A$999,0))=TRUE)+(ISNA(MATCH($C$2:$C$999,$B$2:$B$999,0))=TRUE))=2)/ROW($C$2:$C$999),),ROW()-1)-1,)
ちなみに、
■A,B列にあれば、C列での有無は問わない場合
=OFFSET($A$1,1/LARGE(INDEX((ISNA(MATCH($A$2:$A$999,$B$2:$B$999,0))=FALSE)/ROW($A$2:$A$999),),ROW()-1)-1,)
Excel2003で動作確認済。
ただし、データ数が多いと相当に重たい処理になりますから…
------------------------------------------------------
●B案 データ数が多い場合
1.A,B,C列のデータをD列に縦に並べる。
2.D列のデータを、フィルタオプションで重複を除いてE列2行目以下に書き出す
3.F2セルを
=IF(ISNA(MATCH(E2,$A$2:$A$9999,0)),"","A")&IF(ISNA(MATCH(E2,$B$2:$B$9999,0)),"","B")&IF(ISNA(MATCH(E2,$C$2:$C$9999,0)),"","C")
として下方にフィル
4.F列についてオートフィルタをかけ、目的のデータを抽出
------------------------------------------------------
なお、大量のデータについて「有無」を調べるだけの場合には、
COUNTIF()よりもISNA(MATCH())を使った方が処理速度の点で優位です。
以上ご参考まで。長乱文陳謝。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) エクセル関数のスペシャリストの方、教えてください。 写真のように A列にはデータ C列にはデータの中 7 2022/04/09 00:15
- Visual Basic(VBA) AdvancedFilterについての質問 2 2022/07/02 22:58
関連するカテゴリから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 フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報