• 締切済み

2つのエクセル 同一人物の番号を一方に揃えたい

二つのエクセルシートがあります。 それぞれ、個人番号と氏名が入っているのですが、 同じ氏名の人に違う番号が付いています。 A表 1 山田太郎    B表 20001 山田太郎 のような感じで、1000人分くらいです。 (中には、B表にのみ番号と名前がある人もいます) 同じ名前の人について、B表の番号を、A表の番号に変えたいのですが、 何かいい方法はありませんか? 知人に聞いたところ、「名前でソートをかけて、 一つ一つ手入力すれば?」と言われたのですが、 B表の方は、ある給与ソフトからタブ区切りで 出力したもののためか、うまく50音順に並びませんでした。 よろしくおねがいします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

実際のシートでやらないとうまくいくか判りませんが VLOOKUP関数を使う方法 Sheet1に  1 山田太郎  のA列の番号を空き列にコピー貼り付けして  1 山田太郎・・・1 のようにする。(VLLOKUP関数は持ってくる項目列は名前より右列である必要あり。MATVH関数を使う手もあるがrVLOOKUP関数を使ってみる。) Sheet2の名前(漢字)によってSheet1の番号を引いて新しい列を作る。すなわちSheet2で 20001 山田太郎 のC列とかで =VLOOKUP(B1,Sheet1!$B$1:$C$1000,2,FALSE) と入れる。Sheet1で番号のコピー先を ここではC列と仮定。番号は氏名から数えて次の列なので2、 C$1000の1000は人数(行数)以上指定。 ーー Sheet1 1 山田太郎 1 3 木村研 3 結果Sheet2で 20001 山田太郎 1 20002 鈴木次郎 #N/A 20002 木村研 3 20005 近藤三郎 #N/A 式を複写して、Sheet2のA列とC列の両番号を身極める。チェックを質問者が全行行う。この過程を略してはなら無い。 (1)(Sheet1とSheet2の両方にある氏名分) そしてShee2でA列とC列を見て、Sheet2のA列の番号を採用した行はSheet1のA列を修正する。 これでSheet1とSheet2の両方にある氏名は、Sheet1のA列に正しい状態にする。 (2)(Sheet1に無い氏名) Sheet1に無い氏名はSheet2では#N/Aになるから Sheet2でフィルタで#N/A分をとらえて、Sheet1の最後の次行以下に貼り付ける。 それにはSheet2でA-C列を範囲指定して、#N/Aでフィルタして 次に編集ージャンプーセル選択ー可視セルで#N/Aの行だけとらえてコピーし、Sheet1の最後の行の下に貼り付ける。 C列の#N/Aを抹消。 これで Sheet1、Sheet2にあり Sheet1にしかない Sheet2にしかない が揃う。 ーー やる過程で 同姓同名(Sheet1で関数で出す方法はあるがここでは略) 1字違い(近藤次郎と近藤次朗で一方が間違いらしいなど) などを見つけて対策を講じる。

kuiny
質問者

お礼

ご丁寧な回答、ありがとうございました。 がんばってやってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

参考に,A表にしかいない人やB表だけに載っている人もいたりと,ごちゃごちゃの場合。 添付図: A表とB表を,名前と番号A・Bの順で配置 統合結果のシートを開き,データメニュー(データタブ)の統合でA表とB表のセル範囲を追加,上端行左端列にチェックしてOKすると,名前のリストの結合からそれぞれの表の数字の寄せ集めまで自動で行ってくれます。 採用の番号は D2: =IF(C2="",B2,C2) のような具合にしてみます。 #この方法は,番号が数字になっている場合に利用できます。

kuiny
質問者

お礼

図表までつけていただき、ありがとうございました。 がんばってやってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

A表のみの人をどうするのか 同姓同名や 姓名と名前の間にスペースの有無などは無視しますが 仮に、A表がシート1 B表がシート2だとします。 シート2 番号   氏名 20001 山田太郎 ・・・ と入っている 3列目に =COUNTIF(シート1!B:B,B2) と入れて下までコピーしておけば、同じ名前の人の数が出ます。 (同じ名前がなければ 0ですね) 4列目に =MATCH(B2,シート2!B:B,0) と入れて下までコピーしておけば、同じ名前があれば、その行番号がでます。 (なければエラー、複数あれば、最初の人) 5列目に =IF(C2=0,A2,IF(C2=1,INDEX(シート2!A:A,D2),"名前の重複あり")) とすれば、 同じ名前がなければ そのまま 1列目の番号 一人であれば シート2の番号 重複して名前があれば メッセージ となります。 番号が出たら、5列目をコピー、そのまま値を形式を指定して貼り付け 値に チェック入れて OK すれば 関数で得られた値がそのまま番号になります。 もちろん、一つの列に式を書くことも可能ですが、一つづつ理解しながら進めてください。

kuiny
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、 A表の番号が入力されている列がSheet1のA列で、 A表の氏名が入力されている列がSheet1のB列で、 B表の番号が入力されている列がSheet2のA列で、 B表の氏名が入力されている列がSheet2のB列 であるものとします。  まず、Sheet2をコピーしたSheetを作成して下さい。  次に、適当な列の1行目のセルに次の数式を入力して下さい。 =IF($B1="","",IF(COUNTIF(Sheet1!$B:$B,$B1)=0,$A1,INDEX(Sheet1!$A:$A,MATCH($B1,Sheet1!$B:$B,0))))  次に、上記の数式を入力したセルをコピーして、同じ列の2行目以下に貼り付けて下さい。  すると、その列にA表の番号が表示されます。  次に、上記の数式を入力したセルが存在している列全体をコピーして下さい。  次に、コピーしたデータを、[形式を選択して貼り付け]機能を使用して、Sheet2のA列に「値のみ」貼り付けて下さい。  最後に、Sheet2のコピーシートに保存されている、項目名等をコピーして、Sheet2の同じセル番号のセルに貼り付ければ完成です。

kuiny
質問者

お礼

回答ありがとうございました。

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

一例です。 A表をSheet1、B表をSheet2で見出し行なし、各表のA列を番号列、B列を名前としています。 (1)Sheet2の空き列(仮にD列)のD1に=IF(COUNTA(A1:B1)=2,IF(COUNTIF(Sheet1!B:B,B1),INDEX(Sheet1!A:A,MATCH(B1,Sheet1!B:B,0)),A1),"")として下方向にコピー (2)Sheet2のD列をコピー→A列を選択→形式を選択して貼り付け→値を選択→OK (3)D列を削除

kuiny
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

シート1のA列に,A表の番号を列記 シート1のB列に,A表の名前を列記 シート2のA列に,B表の名前を列記 シート2のB列に,B表の番号を列記 (列の並びを入れ替えます) シート1のC2セルに =IF(COUNTIF(Sheet2!A:A,B2),VLOOKUP(B2,Sheet2!A:B,2,FALSE),A2) と数式を記入して下向けにリスト下端までコピー シート1のC列をコピー シート1のA1に形式を選んで貼り付けの値にマークしてOK C列を削除して終わり。

kuiny
質問者

お礼

早速の回答、ありがとうございました。 こんな関数があるんですね。

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

関連するQ&A

  • 給与等級表をエクセルで参照・・

    やりたいことは 氏名  等級 給与 山田太郎 A1 100,000 山田太郎 B1 120,000 とうような部分があり、等級に「A1」と入れると、自動的に等級表リストを参照して、金額を表示してくれるということです。 等級表は    号/級 A B  1 100,000 110,000  2 100,500 110,500 3 101,000 111,000 #エクセルのスキルは今まで簡単な関数を使うくらい。 #こういう私でもできる? #マクロは使わず?にできる方法希望。 #質問のしかたもちょっと自信なし。

  • エクセルで名前を名字と氏名に分割する方法

    ひとつのセルに名前が入力されています。 名字と氏名の間には空白が入力されています。(例)山田 太郎 この氏名を名字と氏名に分け、それぞれ別のセルにする方法を教えてください。(例)セルA1に山田 太郎とある場合→セルB1に山田 セルC1に太郎としたいのです。 データの数が多いので、手作業だと大変なのでよろしくお願いします。

  • エクセル:vlookup関数でこんなことをしたいのですが・・・

    よろしくお願いします。 vlookup関数のを使って次のような集計をしたいと思っています。 (1)【一月の集金】…挿入・名前の定義で「一月」とつけます。 山田太郎 3000 山田花子 2000 海山次郎 1500 ・・・以下150名ほど。2月から12月までも「別シート」で同じように作られています。1月から12月の氏名は同じ人間もいれば違うのもあり、ばらばらです。氏名コード化等されていません。 (2)【集計】      【1月】 (氏名)   A ...................B 1 山田太郎 =vlokkup(A1,一月.2,false)  2 海野五郎 ・・・ 3 ・・・・ 合計  (一月集金額合計) 同様に、集計欄の横に、2月、3月としていきます。 ここで、この例では、1月の山田花子が集計欄の氏名にもれています。当然、集計表で正確な合計がでません。ここでやりたいのが、「1月の表の山田花子が集計表でもれているよ」いうようなチェックです。たとえば、1月の表の山田花子に色がつくとか・・・ むずかしいことでしょうか?どうかご指導ください。 お待ちしています。人数が各月150人程度で12ヶ月のチェックですから、手作業チェックが大変なのと急いでいるので、お助けをお願いしたいのです。 どうかよろしくお願いいたします。

  • EXCELで条件を満たす時コピー挿入したい

    EXCEL2002ですが、以下のようなデータがあるとします。      A      B 1    山田太郎 100 2    山田花子 100,200,300 3    鈴木一郎 300 B列にカンマ区切りで入力しているデータがある場合、      A      B 1    山田太郎 100 2    山田花子 100 3    山田花子 200 4    山田花子 300 5    鈴木一郎 300 上記のように、B列のカンマ区切り分を振り分けたレコードを新たに 挿入したいのです。 尚参考までに、A列は名前などでデータ内容は多様になり、B列は ある程度決まった選択肢(20~30通り)になります。 一般の関数では無理なような気がするのですが、VBAなどでは可能でしょうか? もし可能であれば、マクロなども組んだことがないものですから、 やさしくご教授いただければ幸いです。 よろしくお願いいたします。

  • エクセルでお聞きしたいことがあります。

    エクセルでお聞きしたいことがあります。 例えばセルA1に山田と入力してセルB2に太郎と入力します。 そしてセルA3に =A1&B2 と入力すると山田太郎となりますが、 これを苗字と名前の間に空白を入れたいです。→ 山田 太郎 初歩的な質問ですが宜しくお願いします。

  • エクセルの並び替えのことで

    以下のような表があります。       x   a   m   e   h 太郎  90  65   75   50  80 一郎  65  40   23   75  45 花子  85  70   55   40  65 A2~A3が氏名、B1~F1がテスト名になっています。 この表をテスト名のアルファベット順に並び替えることは可能でしょうか。 可能でしたらやり方を教えて下さい。

  • エクセルの表の合体

    2つの表A,Bがあります。AとBは同じフィールド名を持っています。 Aが持つIDとBが持つIDが重複する場合,BのレコードをAに上書きし,重複しない場合はそれぞれのレコードを用いて新しい表Cを作りたいのですが,方法がわかりません。 どなたかご教授お願いいたします。 例) A表 ID,苗字,名前 0,佐藤,一郎 1,田中,太郎 2,山田,翔太 3,上田,大作 5,加藤,正和 B表 ID,苗字,名前 0,宮元,賢治 1,田中,太郎 2,山田,翔太 4,山下,謙一 5,上山,浩二 C表 ID,苗字,名前 0,宮元,賢治 1,田中,太郎 2,山田,翔太 3,上田,大作 4,山下,謙一 5,上山,浩二

  • Excelで住所録を作る

    Excelで住所録を作っています。一つのセルに名前を入力したものを、姓と名で分けてとなりの列に表示させるには、どうしたら良いのでしょうか?手入力で分けるには、データが多すぎるので、関数が使えたらいいと思います。名前のデータから苗字だけを取り出す関数はありますか? 表 氏名     姓   名 山田太郎   山田  太郎 こんな感じの表を作りたいです。 Excel2002を使っています。 よろしくお願い致します。

  • エクセル:複数行のセル値を、対応した項目に従って一つのセルにまとめたい

    いつもお世話になっています。 早速ですが、下記のようなことをしたいのですが、 関数でできるでしょうか?  │ A     │ B ----------------------- 1│日本太郎 │ ばら ----------------------- 2│日本太郎 │ さば ----------------------- 3│山田花子 │ キリン ----------------------- 4│山田花子 │ 米 ----------------------- 5│日本太郎 │ イス ----------------------- 6│山田花子 │ インク ----------------------- ↓  │  A   │ B -----------------------  │       │ ばら 1 │日本太郎│ さば  │       │ イス -----------------------  │       │ キリン 2 │山田花子│ 米  │       │ インク ----------------------- A列に人物名、B列に品物を入力します。 誰かが何かを入手した際、その順に入力していきますので、 同一の人物が複数の行に亘って入力された表(上の表)があります。 これを基に「誰が何を持っているか」をまとめる表(下の表)を作りたいのですが、 上の表を基に下の表が自動的に出来上がるような関数はあるでしょうか? VLOOKUPを使っても上手く出来ず、しかし他に思い浮かびません。 何か良い知恵がございましたら、お教え下さい。

  • こんなことエクセル関数でできますか?

    お世話になります。 エクセルの1列に日本人の氏名が約2000名分並んでいます。1セル1名なので例えばA1セル~A2000セルに2000名分の氏名が入力されているといった感じです。 氏名は全角漢字で姓と名の間に全角のスペースが入っています。 ここで、この2000名の中で同姓同名(漢字が全て同じ)を即座に知る方法を探しています。 例えば、山田 太郎がA1、A409、A1765にあり、佐藤 花子がA222、A288にある事実を簡単に知る方法を探しています。 エクセルの関数を使って出来ないでしょうか? (関数が入力された1列2000行に2000名の名前を貼り付けると、B1、B409、B1765に山田 太郎が返ってくるとか・・・。) 宜しくお願いいたします。

専門家に質問してみよう