- 締切済み
Excelで「正」とするデータとの比較。
Excelで「正」とするデータとの比較。 ■添付資料あり(例として簡単にしたものです) わかる方、教えてください。 やりたいこと:「正しい市町村名」と「入力ミス、存在しない市町村名」のチェック ・A列は、変換ミスや、存在しない市町村名が記載されたデータが約10000件くらいあります。 ・C列は総務省のページから正しい市町村名を並べています。 ・C列を「正」としてA列の間違ったデータをB列に何らかの形で検出したいです。 「その他条件」(あまり関係ないかもしれませんが) ・A列は重複したデータは沢山ありますが、それはOKです。 ・A列もC列も県名と市町村の間に全角スペースが入っています。 私、関数が苦手でLookUPでやるのか、EXACTでやるのか、何をどうすればいいのか 非常に困ってます。よろしくお願いします。
- みんなの回答 (11)
- 専門家の回答
みんなの回答
- kon555
- ベストアンサー率51% (1849/3570)
No.10ですが、タブのインデントが消えているのでそのままでは使えませんな。 これでどうかなー 'ここから Sub 不一致検出() Dim i, α1, α2 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row α1 = Cells(i, 1).Value Set α2 = Range("C:C").Find(What:=α1) If α2 Is Nothing Then Cells(i, 2).Value = "不一致" Next i MsgBox "完了しました" End Sub 'ここまで
- kon555
- ベストアンサー率51% (1849/3570)
こういう質問には空気を読まず「VBAでやればいいのに」と回答するのがお約束なのだな。やればいいのにー。 関数でやるとかなり大変そうだけど、試しに組んだらシンプルに出来たので一応置いときます。 'ここから Sub 不一致検出() Dim i, α1, α2 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row α1 = Cells(i, 1).Value Set α2 = Range("C:C").Find(What:=α1) If α2 Is Nothing Then Cells(i, 2).Value = "不一致" Next i MsgBox "完了しました" End Sub 'ここまで 【使い方】 1.この作業をしたいファイル開いた状態で、キーボードの「Alt」と「F11」を同時に押す。 (他に開いてるファイルがあったら一旦閉じて) 2.よくわからない何かが出てくるけど落ち着いて、画面の上側の「挿入(i)」をクリックする。 3.その下に表示される「標準モジュール(M)」をクリックする。 4.それまで灰色だった部分が白くなるので、そこに上の『ここから』『ここまで』の間をコピーして貼り付ける 5.手順2で開いた良く分からないヤツを閉じる。 6.作業用のブックに戻るので、キーボードの「Alt」と「F8」を同時に押す 7.「不一致検出」を選択した状態で「実行」をクリックする 動作は一応確認済みです。一致していないセルの横、B列に「不一致」と入ります。 なお 8.頑張って仕事しているフリをしておく 9.適当な頃合で、出来ました、と報告してサッサと帰る。 この辺りも念のため手順に追加しておくとベストかも。
- chayamati
- ベストアンサー率41% (260/624)
- msMike
- ベストアンサー率20% (368/1813)
http://www.e-stat.go.jp/municipalities/number-of-municipalities に依れば、全国の市町村数は2,000弱のようなので、[No.5]で提示した式中の「C:C」は「C$2:C$2000」に変更した方が計算が早くなるかも。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- msMike
- ベストアンサー率20% (368/1813)
- imogasi
- ベストアンサー率27% (4737/17070)
VLOOKUP関数の第1引数にA列の1セルデータを、第2引数の参照表をC列($C$1:$C$xxx。絶対番地範囲にすること。)、第3引数は、普通は隣列のデータをもってきたりするが、本件は存在のチェックのために表を引くので、1、第4引数をFALSEとして(間隔に存在でなく、一致したものを探すのでFALSE)して、 D1に式を入れて、下方向に式を複写する。 D列に、見つからないという内容の、エラーが出た行をチェックする。 VLOOKUP関数は、エクセルの有名な筆頭関数です。WEBを調べるとすぐ例も見つかる。 http://www.excel-list.com/vlookup.HTML他多数 ISERRORを使いたければ、Googleで「vlookup関数 iserror」で照会のこと。 http://kokoro.kir.jp/excel/vlookup-iserror.html エクセル使いでVLOOKUP関数を思いつかなようではね。 MATCH関数もエラー検出というところは同じ働きをさせられる。 VLOOKUP関数の第3引数のような余分なことを、考えなくてよい。 ーー 質問者が、実際やってみて、思うところがあれば別質問する。 他のチェック点はプログラムの作成のスキルが要るので、質問者には無理だろう。 ==== お勧めの、意外に良い方法は、(コピーを別に取っておいて)A列をソートして、人間の目視(教養)で、チェックすることだ。 間違いや、変なものは、別の行ブロック(カタマリ)の間に、紛れて出てくるので、一見してよくわかる。数千行ならチェックはすぐ終わるよ。
補足
ありがとうございます。たすかります。
- kkkkkm
- ベストアンサー率66% (1742/2617)
No1への補足コメントへの返信です。 > 横のB列に何かしら印が検出できれば良いです No1の式をB2に入れて下にコピー(フィル)すれば画像でのB7とB8に間違いと表示されると思います。
補足
=IF(ISERROR(MATCH(A2,$C:$C,0)),"間違い","") B2にこれを入れて、下にコピーですね。 あ!できました!ありがとうございます。
- mabyos
- ベストアンサー率52% (61/117)
vlookupを使用して検索ヒットするものはOKとみなし、それ以外はエラーということが最善策な気がしますが、一般的に元データの表記揺れというものがあり、これはエクセルでは難しいことがよくありますので、上記のチェックであぶり出された エラーデータを最終目で見て判断する必要があると思います。 vlookupの使用上の注意が下記にまとまっています。 https://global-wing.com/activity/excel_vlookup_error.html
補足
ありがとうございます。初心者の私には難しいページですが何回か読んでみたいとおもいます。 私が求めてたのは https://www.excelspeedup.com/syougou/ これが近いんですが、うまくいきません。
- 1
- 2
補足
よくこんな関数かけますね。ちょっとこのまま使ってみます。 ありがとうございす。