• ベストアンサー

Excelの作業で困っています。

エクセルで、データをコード管理しているのですが、下記(山田太郎と田中花子)のように、同じ人でコード(C1)を2つ所有している場合があるので、重複しているのデータを探し出し、そのデータを削除する作業をしているのですが、5000件以上のデータがあるものですから、相当時間がかかってしまいます。何か関数とか使って処理する方法がないか教えてください。ちなみに今は、データの並び替えをして1件ずつ削除しています。     C1    C2       C3 R1  100  山田 太郎  ヤマダ タロウ R2  200  田中 花子  タナカ ハナコ R3  105  山田 太郎  ヤマダ タロウ R4  300  鈴木 次郎  スズキ ジロウ R5  250  田中 花子  タナカ ハナコ  

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

C2でソートしてみてください。 そうすると、同じ名前の人は一箇所に固まります。 その上で削除すればいいです。更に簡単にするには =IF(R1C2=R2C2,"ERROR","") こういう式を空いている列に作って一気にコピーしてやると、 すぐ上と同じ「氏名」の人がいると"ERROR"と表示されますので 分かりやすいです。 なお、往々にして氏名の間の空白だとか、氏名の後ろに空白だとかが あって、ソートしても同じ名前が並ばないこともあります。その場合 は、TRIM関数を使って空白を削除してからソートしてください。 =TRIM(R1C2) これで、不要な空白は全て半角空白の1文字に入れ替わるはずです。

HIKARI1210
質問者

お礼

ご回答ありがとうございました。 IF関数を使用したら目につきやすく処理しやすかったです。 たいへん勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

R1C1形式でシートを使用しているのですよね。 1行目に行を挿入し、タイトルを適当につけてくだい。 表の適当なところ(R1C1とか)を選択した状態で、「データ」>「フィルタ」>「フィルタオプションの設定」を選択します。 「リスト範囲」のセル入力欄にC2と入力し、「重複するレコードは無視する」をチェックしてOKを押します。 これで名前が重複しないデータが抽出できるので、Ctrl+Aでシート全体を選択して他のシートに貼り付ければいいです。

HIKARI1210
質問者

お礼

ご回答ありがとうございました。 私の説明不足もあったのですが、結果的には始めにham_kamoさんのアドバイスで処理した後、FEX2053さんのアドバイスで処理したら、理想のデータ処理ができました。本当に助かりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

作業列を作成してその列でフィルタを掛けると良いでしょう。 C4列に  =COUNTIF(C[-2],RC[-2]) この数式を入力  ※該当する行のC2列のセル(名前データ)と同じ内容のセルの個数を数えています。 その後、オートフィルタで 【1より大きい】 データを抽出して表示させることで重複しているデータのみ編集できるようになります。  データ → オートフィルタ → ▼クリック → オプション → 「1」より大きい(を指定) その後、重複しているデータを一行ずつ削除しましょう。 SUMPRODUCT関数を使うと重複した余計なデータだけをフィルタで抽出できますが、式が複雑に見えるし説明も煩雑になりがちです。 COUNTIF関数でも十分でしょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルについて

    エクセルで住所録を作っているのですが、名前とフリガナを同じセルに入力していました。フリガナだけを横のセルに移動することは可能でしょうか      A             B 1山田 太郎 ヤマダ タロウ  2山田 花子 ヤマダ ハナコ    A | B 1山田 太郎 | ヤマダ 太郎 2山田 花子 | ヤマダ ハナコ 宜しくお願いします。

  • Excelでデータの照合

    Excelでデータを照合して抜き出す方法が知りたいです。 (例)   A            B            C 1 氏名          シメイ         頭文字 2 山田太郎       ヤマダタロウ     ヤ 3 Michael・Williams   Michael・Williams   マ 4 鈴木花子       スズキハナコ     ス 5 ピーター・アダムス  ピーター・アダムス  ピ ※名前は適当に考えました。 上のデータで Cの頭文字とBの先頭の文字が一致するかの確認ができるようにしたいです。   A            B            C      D 1 氏名          シメイ         頭文字   正誤 2 山田太郎       ヤマダタロウ     ヤ      ○ 3 Michael・Williams   Michael・Williams   マ      × 4 鈴木花子       スズキハナコ     ス      ○ 5 ピーター・アダムス  ピーター・アダムス  ピ      ○ あるいは、   A            B            C 2 山田太郎       ヤマダタロウ     ヤ 4 鈴木花子       スズキハナコ     ス 5 ピーター・アダムス  ピーター・アダ     ピ や、   A            B            C 3 Michael・Williams   Michael・Williams   マ のように表示できるようにしたいです。 関数は簡単なのはわかりますが、マクロはさっぱりなので コードや関数は解説つきで提示していただけると幸いです。 よろしくお願いします。

  • エクセル・1つのセルに入った漢字(カナ)の分け方

    エクセルにお強い方、教えてください>< A1のセルに、 山田 花子(ヤマダ ハナコ) とあるとします。 私は B1のセルに 山田 花子 C1のセルに (ヤマダ ハナコ) と、分けてデータ化させたいのですが、 どのようにマクロを組めばよいでしょうか? また、分け終わったC1の(ヤマダ ハナコ)に 置換を使って( )をとって、 カナ を かな に直すため、 PHONETICと書式のふりがな機能を使って直しても データにエラーは起きずに処理できるでしょうか? 最終的なデータとして A1セル→山田 花子(やまだ はなこ) B1セル→山田 花子 C1セル→やまだ はなこ としたいのです。 ご存知の方いらっしゃいましたら、教えてください。 宜しくお願い致します。

  • EXCELの技に関する質問

    EXCELに詳しい方がいらっしゃいましたら、すみませんがお教えください。 EXCELであるシートに以下のように一定ではない並びで「名前(年齢)」と複数のセルに入力してあったとします。 【BEFORE】 ヤマダ ハナコ(25)           ヤマダ タロウ(52) スズキ ジロウ(13) この時、この年齢に1歳加え、以下のような状態にしたいと思っています。 【AFTER】 ヤマダ ハナコ(26)           ヤマダ タロウ(53) スズキ ジロウ(14) そこで、上記のように3つくらいであれば普通に年齢を手補正すればいいのですが、数が大量にある時に、何か簡単にプラス1歳をしていく方法はありませんでしょうか? ややこしいことに、いろんな年齢の人がいるので置換を使っても手間がかかりますし、名前と年齢がひとつのセルに文字列として入っているうえ、列などが一定ではないので「=A2+1」といった簡単な数式を使うわけにもいきません。 (これは何かというと人名年齢入りの会社の組織図みたいなものなのです) どなた何か良いアイディアがありましたらどうぞよろしくお願い致します。

  • エクセルにて、CSV形式の顧客名簿から、女性で○○齢以上の○○月生まれの人だけ抽出する方法

    どなたかご教示下さい。 下記のようなCSVファイルをエクセルにて扱う場合、 例えば女性で30歳以上かつ8月生まれの人だけを抽出したい時(今年の8月で30歳になる人を含みます)、 どのようにすれば良いのでしょうか? 最初に私が考えたのは、生年月日が8桁の標準形式になっている事から、 このセルを(ここではE2とする)を一旦、3つの別のセルにそれぞれ、 =INT(E2/10000) =INT(MOD(E2,10000)/100 =MOD(E2,100) の関数にて、 生年・生月・生日に分解し、さらにそれで得られたセルの値を別のセルに、値貼り付けし、 そして性別と生年と生月のそれぞれのセルを対象に、データ → フィルタ の 「フィルタオプションの設定」にて検索条件を設定し抽出する方法です。 しかしこの方法では、生年月日セルの分割や値貼り付けなどの工数が必要となる事から、 できる事ならこの工数を経ずに、8桁の生年月日に対してダイレクトに生年・生月を判断し、 性別と合わせて条件抽出したいのです。 実際に対象となるファイルは約3万人のリストからの抽出となります。 何か良い方法はありませんでしょうか? よろしくお願い致します。 <ファイル例> 顧客番号,氏名,フリガナ,性別,生年月日,居住区 0001,山田 太郎,ヤマダ タロウ,男性,19600612,東京 0002,山田 花子,ヤマダ ハナコ,女性,19790806,東京 0003,鈴木 花子,スズキ ハナコ,女性,19820512,福岡 0004,鈴木 次郎,スズキ ジロウ,男性,19790725,福岡 0005,高橋 一郎,タカハシ イチロウ,男性,19701223,東京 0006,佐藤 二郎,サトウ ジロウ,男性,19900524,名古屋 0007,上田 花子,ウエダ ハナコ,女性,19690801,大阪 0008,坂田 次郎,サカタ ジロウ,男性,19590814,福岡 0009,中村 太郎,ナカムラ タロウ,男性,19790915,札幌 0010,中村 花子,ナカムラ ハナコ,女性,19860830,札幌

  • 複数行をINSERTで『ORA-00911: 文字が無効です。』というエラーが出てしまいます。

    SQL初心者です。 CommonSQLEnvironmentを使用して複数行のデータを登録したいのですが、 ****************************************** INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1'); INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1'); ****************************************** この状態で実行すると、『ORA-00911: 文字が無効です。』と出ます。 セミコロン(;)を抜いて ****************************************** INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1') INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1') ****************************************** を実行すると『ORA-00933: SQLコマンドが正しく終了されていません。』と出ます。 ちなみに1行のみ実行で ****************************************** INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1') ****************************************** は成功します。 また、 ****************************************** INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1'), ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1'); ****************************************** というものも試してみましたが駄目でした。 CommonSQLEnvironmentでの複数行追加の良い方法がありましたら教えて頂ければ幸いです。 宜しくお願い致します。

  • エクセルで同じ日に2回出勤したデータ数を数えたい

    同じ人が同じ日に2回出勤しているデータ数を知りたいです。 2 山田太郎 1/21 10:00 13:00 2 山田太郎 1/21 18:00 24:00 1 山田太郎 1/22 10:00 17:00 1 山田太郎 1/23 14:00 22:00 1 鈴木花子 1/21 10:00 17:00 1 鈴木花子 1/23 17:00 24:00 2 鈴木花子 1/24 10:00 15:00 2 鈴木花子 1/24 18:00 24:00 ↑のようなタイムカードがあります。 上の例だと、2もしくは4という数値がほしいです。 今までは図のようにA列に countifs関数を記入し、同一人物が同一日付に2回出勤 しているかをチェック、その数を数えていました。 今後は、 同一人物が同一日付に2回出勤している件数を1つの関数で知りたいと考えています。 ↑の例だと、4件 という数を1つの関数で出したいです。 どのようにすればよいのかアドバイスをお願いいたします。

  • エクセルで 全角の空白を含むセルを見つけたい

    こんにちは。 エクセルを使っていて、姓名の間に半角の空白(スペース)を入れるはず なのですが、全角の空白を入れたデータがいくつか出来てしまいました。  (正) 山田 太郎  /ヤマダ タロウ・・・半角スペース  (誤) 山田 太郎 /ヤマダ タロウ・・・全角スペース これを探したいのですが(直すのはまた別のソフトなのです。 エクセルでチェックしながら直さないとなんです。不便。。) ご存知の方がいらっしゃいましたらよろしくお願いいたします!

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • プログラミングを始めたばかりの初心者です

    プログラミングを始めたばかりの初心者で、行き詰っていることがあります。 Windows環境でjavaのプログラミングをしています。(JDK1.7.0_03) InputFileというファイルを、指定したバイト単位で文字を切り出し、新たなOutputFileという ファイルに書き出したいのですが、以下の例のように、全角マイナスだけが?と表示されて しまい、うまくいきません。 InputFile 田中太郎 tanaka tarou  タナカタロウ 田中町1-1-1 06011112222・・・ 吉田花子 yoshida hanako ヨシダハナコ 吉田町2-2-2 01011113333・・・ 山田良子 yamada yoshiko ヤマダヨシコ 山田町3-3-3 02011115555・・・ OutputFile 田中太郎 tanaka tarou  タナカタロウ 田中町1?1?1 06011112222・・・ 吉田花子 yoshida hanako ヨシダハナコ 吉田町2?2?2 01011113333・・・ 山田良子 yamada yoshiko ヤマダヨシコ 山田町3?3?3 02011115555・・・ お見せするのも恥ずかしい滅茶苦茶なソースかもしれませんが現状は以下の通りです。 どなたか教えていただけないでしょうか。よろしくお願い致します。 (読み込むInputFileというファイルの文字コードはEUCです。) ソース import java.io.*; class ReadTest{ static LineNumberReader inr; static InputStreamReader isr; static String FN = "InputFile"; static OutputStreamWriter osw; public static void main(String[] args) { String line; try { FileInputStream fis = new FileInputStream(FN); isr = new InputStreamReader(fis,"EUC_JP"); inr = new LineNumberReader(new BufferedReader(isr)); FileOutputStream fos = new FileOutputStream("OutputFile"); osw = new OutputStreamWriter(fos,"EUC_JP"); BufferedWriter bw = new BufferedWriter(osw); while ((line = inr.readLine()) != null) { bw.write(new String(line.getBytes(),0,120)); bw.newLine(); } System.out.println(inr.getLineNumber() + "件読み込み完了"); fis.close(); isr.close(); bw.close(); fos.close(); } catch (IOException e) { System.out.println(e); } } }

このQ&Aのポイント
  • MFC-J820DNの通信ボックスとの接続についての問題が発生しています。
  • 接続確認は正常な状態ですが、受信やファックス送信ができません。
  • 設定は変更しておらず、周辺機器の電源を落としても解決しません。
回答を見る

専門家に質問してみよう