- ベストアンサー
エクセルで計算方法教えてください!
大量の資料を片付けてまとめるのに手間取っています。エクセルでスムーズにまとめたいのですが、例えば… 1000件の取引先リストがあります。 AAAAAA株式会社 BBBBBB株式会社 CCCCCC有限会社 DDDDDD株式会社 EEEEEE有限会社 … 中には同じ会社がかぶっているものがあります AAAAAA株式会社 BBBBBB株式会社 CCCCCC有限会社 AAAAAA株式会社 EEEEEE有限会社 BBBBBB株式会社 … 要するにこれをソートして同じ会社の名前が2つ出てこないようにしたいのです。普通にソートしただけだと… AAAAAA株式会社 AAAAAA株式会社←同じ会社なのでいらない BBBBBB株式会社 BBBBBB株式会社←同じ会社なのでいらない CCCCCC有限会社 EEEEEE有限会社 … 100件程度なら手動で削除も頑張れますが数千件あるとさすがに無理なのでこれを判別して自動的に削除する計算方法があればどなたか教えてください!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>削除する計算方法があればどなたか これがエクセルの関数を考えているなら、原理的に不可能なので、思い違いしないように。エクセルの関数は行削除はできません。 ただし他シートなどに、元シートの重複しない(行)ものだけを持ってくる 方法はあり、私も過去の質問に何度も答えましたが、少し複雑だし、あまり 勧めません。 同じことをVBAでやれば、特にソート後のものを対象にすれば、下記のように、かんたんです。ソートもマクロの記録を多少改造すればできます。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") '最下行数を知る d = sh1.Range("A65536").End(xlUp).Row 'MsgBox d j = 1 'sheet2に書き出す先頭行 m = "XXX" 'Sheet1の第1行以外の値をセット For i = 1 To d '---A列直前の行と変わったか If sh1.Cells(i, "A") = m Then Else '----変わったときA,B列をSheet2へ移す sh2.Cells(j, "A") = sh1.Cells(i, "A") sh2.Cells(j, "B") = sh1.Cells(i, "B") m = sh1.Cells(i, "A") j = j + 1 'Sheet2の次行へ End If Next i End Sub 自分に合わせて改造できるならどうぞ。
その他の回答 (3)
- pascal3141
- ベストアンサー率36% (99/269)
ココに重複行を削除するVBAコードがあります。以前同じような質問があったので、再度のせます。 1列目の値が同じものを1つのこして他は削除します。 任意の列での比較では、コードのCells(○,1)の1を調べたい列の数字にすればいいです。 このコードは、シートタブ右クリック、コードの表示ででてくるシートにコピペ。 動かすときは、「ツール」「マクロ」「マクロ」「実行」です。 Sub GyouDelete() Dim myLastLow As Long Dim i, r As Long '画面のちらつきをなくす Application.ScreenUpdating = False 'シートの行数カウント r = ActiveSheet.Rows.Count '1列目の最下行の数字を見つける myLastLow = Cells(r, 1).End(xlUp).Row '最下行から上へ重複データ削除 For i = myLastLow To 3 Step -1 If Cells(i, 1).Value = Cells(i - 1, 1).Value Then Cells(i, 1).EntireRow.Delete End If Next i End Sub
- -izayoi-
- ベストアンサー率45% (48/105)
[データ]-[フィルタ]-[フィルタオプションの設定]の「重複するレコードは無視する」 で、どうでしょうか?
- Somali_Shinji
- ベストアンサー率14% (45/305)
「ピボットテーブル」という機能があります。 それで集計すれば重複した名前は出てこなくなります。 ピボットテーブルについて詳しくはマニュアルもしくはヘルプをご覧ください。