
名前と郵便番号を繋げて同一判別キー(G列)を作り、ソートをかけました。
■同一判定キー ■名前 ■フリガナ ■電話 ■郵便番号 ■住所
田中123-1234 田中 123-1234
田中123-1234 田中 0X0-1X34-1234 123-1234
田中123-1234 田中 タナカ 123-1234 新潟県
すると、同一人物のデータが何度も手入力されていて、それぞれの行で情報量がバラバラです。
単純に重複と扱って1行目以降を削除するわけにいきません。
そこで、同一判定キーを基に、空欄の部分は他の行にあるデータをコピーして1行にまとめたいです。
どう処理すれば可能でしょうか。
まとめたい情報列はH列~AD列まであります。
約3000行です。
■同一判定キー ■名前 ■フリガナ ■電話 ■郵便番号 ■住所
田中123-1234 田中 123-1234
田中123-1234 田中 0X0-1X34-1234 123-1234
田中123-1234 田中 タナカ 123-1234 新潟県
↓↓↓↓↓↓↓↓↓↓↓↓↓↓
■同一判別キー ■名前 ■フリガナ ■電話 ■郵便番号 ■住所
田中123-1234 田中 タナカ 0X0-1X34-1234 123-1234 新潟県
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
こんばんは!
VBAになりますが、一例です。
↓の画像のように元データはSheet1にあり、Sheet2に表示するようにしてみました。
(質問の配置とは異なると思いますが、「同一判定キー」の列は不要です。
尚、Sheet3を作業用のSheetとして使用していますので、
Sheet3はまっさらな状態にしておいてください。
Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から//
Dim i As Long, lastRow1 As Long, lastRow3 As Long
Dim wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("Sheet2")
Set wS3 = Worksheets("Sheet3")
Application.ScreenUpdating = False
With Worksheets("Sheet1")
lastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS2.Range("A1"), unique:=True
For i = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
wS3.Cells.ClearContents
.Range("A1").AutoFilter field:=1, Criteria1:=wS2.Cells(i, "A")
Range(.Cells(2, "A"), .Cells(lastRow1, "E")).SpecialCells(xlCellTypeVisible).Copy wS3.Range("A1")
lastRow3 = wS3.Cells(Rows.Count, "A").End(xlUp).Row
Range(wS3.Cells(1, "A"), wS3.Cells(lastRow3, "E")).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
Range(wS3.Cells(1, "B"), wS3.Cells(1, "E")).Copy wS2.Cells(i, "B")
Next i
.AutoFilterMode = False
wS3.Cells.Clear
wS2.Columns.AutoFit
End With
Application.ScreenUpdating = True
wS2.Activate
End Sub 'この行まで//
こんな感じではどうでしょうか?m(_ _)m

ご回答ありがとうございます。
"E"となっている部分を"AD"に変更し
同一判定キーの列をA列に移動して実行したところ
希望通りの結果が得られました。
非常に参考になりました。
ありがとうございます!!
No.2
- 回答日時:
数千人分のデータなので、何処まで役に立つか疑問だけど、
↓↓↓↓↓↓↓↓↓↓↓↓↓↓
の上にある一人分のデータである添付図上段を最下段のようにするのは簡単にできます。
[ジャンプ]コマンドで“空白セル”だけを選択した後、[削除]コマンドで“上方向にシフト”を実行するのです。
ただし、オートフィルタで抽出したばかりのデータではできないのが残念ではあります。

回答ありがとうございます。
この方法は存じておりますが、1人だいたい3行前後ある状態ですので、
1000人分と仮定した場合、H列~AD列の23列を編集してゆくとなると
少なく見積もっても1000人×23列分で2万3千回のセル選択と削除操作をする事になる為、
現実的ではないですね。
また、下に続く他の人の情報も一緒に上方向へシフトしてしまうのではないでしょうか。
No.1
- 回答日時:
》 名前と郵便番号を繋げて同一判別キー(G列)を作り、ソートをかけました
ということは、「約3000行」のレコードで、「名前」以外には「郵便番号」だけは“抜け”がない、ということですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
excelで複数行を一行に並び変える方法
Excel(エクセル)
-
EXCEL 複数行のデータを1行にまとめる方法
Excel(エクセル)
-
エクセルで複数行のデータを1行にする方法
Excel(エクセル)
-
4
excelで複数行にまたがるデータを1行にまとめたい
Excel(エクセル)
-
5
エクセルで、列内が同じ名前を集計する方法は?
Excel(エクセル)
-
6
複数行に渡るセルを1行にまとめることはできますか?
Excel(エクセル)
-
7
エクセルで同じ名前の人が同じ列にくるように並べ替えたい
Excel(エクセル)
-
8
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
9
エクセル 複数行ある同一商品を1行にまとめるには?
Excel(エクセル)
-
10
エクセル 列データは買えずに重複行を一つにまとめる
その他(Microsoft Office)
-
11
EXCELで2列を参照し、重複するものを横に並べたい
Excel(エクセル)
-
12
同列にある複数の同じ番号をひとつにまとめる関数
Excel(エクセル)
-
13
複数の列に入力されている文字を一列にまとめる。
Excel(エクセル)
-
14
エクセルで同じ名前の人のセルの数値を合計したい
Windows Vista・XP
-
15
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
-
16
【エクセル】1列内に複数ある同項目を、各項目一つずつに絞る方法
Excel(エクセル)
-
17
EXCELで バラバラの列にあるデータを決められた列に移動したい。
その他(Microsoft Office)
-
18
エクセル 同じ値を探して隣の数値をコピーする
Excel(エクセル)
-
19
Excelで隣のセルと同じ内容に列を並べ替える方法
Excel(エクセル)
-
20
エクセルで同じ名前ごとの合計を出したいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Ctrlキー+HomeキーでセルA1へ移...
-
5
パソコンの青い線枠が消えませ...
-
6
「か」を数字で表すとどうなり...
-
7
スマートキーって予備のキーを...
-
8
メールアドレスの作成の際上バ...
-
9
NumLockが勝手に切り替わる?
-
10
PgDn、PgUpの設定が急に変わっ...
-
11
Scroll Lockが勝手に有効になる...
-
12
キーボードの上部にあるランプ...
-
13
エクセルで複数行に散らばった...
-
14
EXCELで、長い表の一番下までカ...
-
15
キーボードにキーをつけるため...
-
16
「(アクサングラーブ)キー」と...
-
17
Access2010 Enterで次テキスト...
-
18
エクセル シート間の移動 シ...
-
19
キーボードにゴミ・・・取り方は?
-
20
Dynabook キーボードのキーを外...
おすすめ情報
公式facebook
公式twitter
>「郵便番号」だけは“抜け”がない、ということですか?
いえ、最も抜けが少ない部分ではありますが抜けは多少あります。
繋げた理由は、フルネームだけでソートを行うと同姓同名がいた場合に混ざってしまうからです。
名前+郵便番号で処理し、それでも手動で対応するのは大変な件数が残った場合は、
続いて
名前+電話番号という組み合わせで処理する。
という2段階で処理すれば、同姓同名を回避しつつ処理できると考えています。