
こちらで、ひとつのシート内での重複データの抽出はできました。
↓
http://www12.ocn.ne.jp/~momonet/excel-temp41.htm
これを応用し、複数のシートの列内の重複を抽出することはできますか?
シート1のA列とシート2のC列というように、同じ列ではないこともあります。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
URLのあるページを応用してなさっているということ
なので、それに倣って書くと
=COUNTIF(Sheet1!A:A,A1)+COUNTIF(Sheet2!C:C,A1)>1
となります。
ただし、上記の式は、セルに書く場合はエラーが出ない
のですが、条件付き書式には使えません。
条件付き書式に使う場合は、それぞれの範囲に名前を
つけておく必要があります。
Sheet1!A:Aにはhoge1
Sheet2!C:Cにはhoge2
とつけた場合は、
(Sheet1のA列を選択しておいて、名前ボックスに名前を
つけます。[挿入][名前][定義]からでも可)
=COUNTIF(hoge1,A1)+COUNTIF(hoge2,A1)>1
となります。
できました!!
勉強不足で申し訳ないのですが教えてください。
=COUNTIF(hoge1,A1)+COUNTIF(hoge2,A1)>1
↑ ↑
ここのA1の意味って何ですか?
私のデータの場合は、
シート1がF列、シート2がD列なので、
=COUNTIF(hoge1,F1)+COUNTIF(hoge2,D1)>1
かと思いましたが、
=COUNTIF(hoge1,F1)+COUNTIF(hoge2,F1)>1
なんですね~。
No.5
- 回答日時:
遅くなりました。
>なぜそこがA1なのか?
>> hoge1の中にA1と同じセルはいくつあるか
>A1って、A列の1行目ですよね?
>他の行A50とかでもいいわけですよね?
>A1には何も入力されてないんですが・・・・
了解です。が、説明が難しいですねぇ・・・
まず、相対参照と絶対参照は理解されていますか?
理解していなかったら、ヘルプで「絶対参照」などを
調べて、$の意味を理解してください。
次に、条件付き書式を設定したセル(F列やD列)の
下の方(一行目以外)の条件付き書式を表示させて
式を見てみて下さい。
もし、F3のセルだったら、条件は
=COUNTIF(hoge1,F3)+COUNTIF(hoge2,F3)>1
となっていると思います。
つまり、各セルに対して異なった条件が設定されて
いると思います。
(これは式の意味がわかっていれば、F3のセルに
対しては上記の式に「なっていなければならない」
ことは理解されていると思います)
このように複数のセルを選択しておいて、一気に書式や
式を設定する場合の仕様というかテクニックというか
そいういうものを理解していただく必要があります。
あるセル範囲を選択した場合、ひとつのセルを除いて
グレーに反転していると思います。そのひとつの白い
セル(アクティブセル)を基準に式を書くと
アクティブセルに式を書いてから、他のセルにコピー
したのと同じ効果が得られます。
ちょっとだけ例を挙げると
B11からB20を選択してB11が白い状態で、数式バーに
=A11
と書いて、Ctrlを押しながら、Enterキーを押すと
選択した範囲に式が入力されます。
その場合は、B11に=A11,B12に=A12・・・
となっています。
ところが、
B20からB11を選択してB20が白い状態で、数式バーに
=A11
と書いて、Ctrlを押しながら、Enterキーを押すと
選択した範囲に式が入力されます。
その場合は、B20に入力した=A11という式が入りますが、
B19には、=A10と
B20のセルをコピーした場合と同じ式が入っていると
思います。
つまり、複数のセルを選択しておいて式を書く場合は、
アクティブセルを基準に式を書く必要があります。
・・・やっと本題です。
で、F列を選択すると、F1だけが白くなっていますよね?
つまり、F列を選択しておいて、F列全体に式を入力する
場合は、F1を基準に式を書かなければいけないわけです。
ですから、F1が空欄だろうとなかろうと、F列を選択して
条件付き書式を設定する場合は、
=COUNTIF(hoge1,F1)+COUNTIF(hoge2,F1)>1
と書かなければいけないことになります。
・・・分かりにくいですね。申し訳ない。
No.4
- 回答日時:
VBAでやって見ました。
Sub test01()
Dim d(100000)
Dim f(100000)
Dim sh1 As Worksheet
Dim sh2 As Worksheet
s1 = InputBox("シート1名=")
s1 = "Sheet1"
C1 = InputBox("シート1の列名=")
C1 = "A"
s2 = InputBox("シート2名=")
s2 = "Sheet2"
C2 = InputBox("シート2の列名=")
C2 = "B"
Set sh1 = Worksheets(s1)
Set sh2 = Worksheets(s2)
d1 = sh1.Range(C1 & "65536").End(xlUp).Row
d2 = sh2.Range(C2 & "65536").End(xlUp).Row
'-----別シート2列データ統合
n = 1
For i = 1 To d1
d(n) = sh1.Cells(i, C1)
f(n) = i & C1
n = n + 1
Next i
For i = 1 To d2
d(n) = sh2.Cells(i, C2)
f(n) = i & C2
n = n + 1
Next i
'------ソート
For i = 1 To n - 1
For j = i + 1 To n
If d(i) < d(j) Then
Else
w = d(i)
d(i) = d(j)
d(j) = w
w = f(i)
f(i) = f(j)
f(j) = w
End If
Next j
Next i
'-----別シートに結果出力
sh2.Activate
k = 1
For i = 1 To n - 1
If d(i) = d(i + 1) Then
sh2.Cells(k, "X") = d(i)
sh2.Cells(k, "Y") = f(i) & "-" & f(i + 1)
k = k + 1
End If
Next i
End Sub
'-----
シート2のX,Y列にダブリの片方とダブリ両方の行・列記号を出してます。
私のしたテスト時の名前になってますので変えること。
s1 = "Sheet1" をシート1の名前に変える
C1 = "A" をシート1の列記号に変える
s2 = "Sheet2" をシート2の名前に変える
C2 = "B" をシート2の列記号に変える
Sheet1+Sheet2で10万行以下。
VBAに興味があれば、改良してやって見てください。
No.3
- 回答日時:
>できました!!
よかったです。私もうれしいです。(^o^)丿
>=COUNTIF(hoge1,A1)+COUNTIF(hoge2,A1)>1
> ↑ ↑
>ここのA1の意味って何ですか?
COUNTIFの関数の意味はわかりますか?
=COUNTIF(hoge1,A1)
だと、hoge1の範囲の中に、A1のセルに書いてある値が
いくつあるかを数えています。
ですから、
=COUNTIF(hoge1,A1)+COUNTIF(hoge2,A1)
で、hoge1の中にA1と同じセルはいくつあるか+
hoge2の中にA1と同じセルはいくつあるかを
数えていることになります。
それが、1よりも多ければ、検査している(セルA1)以外に
も同じ値があるということになるわけです。
ヘルプでCOUNTIFを調べて内容をよく理解してみて下さい。
#分からなければ、何度でも質問をどうぞ。
余談:
hoge1というのは好きな名前を付けてよかったんですが。
(^^ゞ
度々ありがとうございます。
COUNTIFの意味は分かりますが、式の書き方について理解できないのだと思います。
なぜそこがA1なのか?
> hoge1の中にA1と同じセルはいくつあるか
A1って、A列の1行目ですよね?
他の行A50とかでもいいわけですよね?
A1には何も入力されてないんですが・・・・
(私の場合はF1とかD1ですけどね)
>hoge1・・・
大丈夫です!違う名前にしてあります。
No.1
- 回答日時:
条件付書式は同じシートの値しか使えませんし、COUNTIFはたぶん連続した範囲しか参照できなかったと思いますので、例えば条件付書式を使うシートの使用しない列に、セル参照で全てまとめてしまうというやり方ではいかがでしょうか。
例えば、条件付書式を使うシートをSheet1として、Sheet1のA列とSheet2のB列を参照範囲にしたい場合に、X列とY列を作業列として
X1に =IF(A1="","",A1)
Y1に =IF(Sheet2!B1="","",Sheet2!B1)
として以下コピーして(単に =A1 などだと複数の空白行を重複行として0値として拾ってしまうので、IF文で処理しています)、条件付書式のところの数式を=COUNTIF($X:$Y,A1)>1とする。
もし作業列を表示したくなければ右クリック→表示しないで非表示にする。
そんなところではいかがでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) 複数のシートを一つのシートにまとめたい 左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽 2 2022/09/18 18:42
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) ListView重複データ削除 2 2022/08/05 18:12
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編 7 2022/08/22 13:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル関数について。
-
エクセルの並べ替えについてお...
-
エクセルで同列から同じ数字を...
-
串刺し計算エクセル 一部シー...
-
A欄の条件かつB欄の条件にあっ...
-
Excelで○○じゃない時。の合計の...
-
エクセル・列の非表示について
-
エクセルで、セルに何か入力す...
-
エクセルについて
-
セルの色別に計算したい
-
エクセルでURL挿入後、名前を変...
-
エクセルで用紙内に希望幅を1...
-
シートの中の結果を自動的に違...
-
エクセルでセルに住所を入力し...
-
エクセル関数使用で赤色数字を...
-
負や0を含む達成率の出し方につ...
-
エクセルで入力のあるセルのみ...
-
EXCELのデータ修正時に、...
-
他ブックからの集計はマクロで...
-
エクセルについてお聞きしたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでURL挿入後、名前を変...
-
エクセルで入力のあるセルのみ...
-
EXCELのデータ修正時に、...
-
列幅が変更できなくなった
-
エクセル関数使用で赤色数字を...
-
エクセルで逆さまに印刷したい
-
EXCELで千円単位を百万円単位に
-
勤務表で勤務時間が入力されて...
-
エクセルでの順位に応じた点数...
-
画像(GIF/JPEG Image)をエ...
-
エクセルで1分あたりの作業量...
-
異なる締め日に対応して支払日...
-
表に日付と担当者を入力すると...
-
カレンダー作成 別シートより...
-
エクセルのマクロについて(同じ...
-
エクセルで部屋番号や個人情報...
-
エクセルの計算式を教えてくだ...
-
3つの条件のうち、2つを満た...
-
Mac版Excelの列移動?について
-
一つのセルに計算式を入れて別...
おすすめ情報