人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
c:\test\のホルダーの中に複数のCSVファイルがあります
データはA列に1行目から文字列であります
そのファイルのデータをエクセルの重複削除のボタンを使って
連続してできるマクロをお願いします

ボタンがだめなら関数=COUNTIF($A$1:A1,A1)
を使って連続でやれるマクロ
この場合はb列に数値だけがのこるようにする
よろしくお願いします

●質問者: inosisi
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント ベストアンサー
Sub main()
Dim p As String
'対象フォルダを指定してください。
'このフォルダに この実行用のブックは 入れないでください。

p = "C:\test\"

'処理対象となる拡張子を指定して 呼び出します。
Call jikkou(p, "csv")

End Sub


Sub jikkou(p As String, s As String)

Dim bk() As String
Application.DisplayAlerts = False
 
f = Dir(p & "*." & s, vbNormal)

Do While f <> ""
 k = 0
 ReDim bk(k)
 
 ch1 = FreeFile
 Open p & f For Input As #ch1
 
 Do While Not EOF(ch1)  'ファイルの終端かどうかを確認します
 Line Input #ch1, textline  'データ行を読み込みます
 ReDim Preserve bk(k)
 bk(k) = textline
 k = k + 1
 Loop
 Close #ch1
 
 ch2 = FreeFile
 Open p & f For Output As #ch2
 For i = 0 To k - 1
 If bk(i) <> "" Then
 For b = i + 1 To k - 1
 If bk(i) = bk(b) Then
 bk(b) = ""
 End If
 Next b
 Print #ch2, bk(i)  'データの書き込みをします
 End If
 Next i
 Close #ch2
 
 f = Dir
Loop

Application.DisplayAlerts = True

End Sub



ボタンとかは使わず重複行をすべて削除して重複しないようにしました。
行全体で 重複のチェックをしています。


inosisiさんのコメント
ありがとうございます 処理時間はボタンの方が早いと思いましたので質問しました 参考にボタンの場合のマクロは作れますか

きゃづみぃさんのコメント
たぶん、速度的には そんなに変わらないのではないのかと思います。 ちなみに エクセル2003には 重複削除のボタンってないです。

きゃづみぃさんのコメント
調べたら 2007からの機能みたいですね。 いろいろ選択して 削除とかするみたいです。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ