[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『配列内で重複データの削除』(Lion)
お世話になります。
Sheet1の列Aに重複のある文字列データがあります。例えばということで,以下を設定します。
名前(タイトル行)
りんご
みかん
りんご
ばなな
なし
なし
みかん
ばなな
これをrngという配列に入れて,その中で重複データの削除を行い,その結果をSheet2に出力したいのですが,どう書いたらいいのでしょうか?素人ですので,わかりやすいものでご説明いただけると幸いです。
Sub test()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
rng = ws1.Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
ws2.Range("A1").Value = rng
End Sub
< 使用 Excel:Office365、使用 OS:unknown >
Sub test() Worksheets("Sheet1").Columns(1).AdvancedFilter _ xlFilterCopy, , Worksheets("Sheet2").Range("A1"), True End Sub
(マナ) 2022/01/10(月) 11:33
悩むくらいなら↓のようにすれば既知の方法で対処できませんか?
(1)Sheet1の列Aのデータをコピーする (2)Sheet2にそのまま貼り付ける (3)(2)に対して重複の削除をしてユニークデータにする
(もこな2 ) 2022/01/10(月) 11:35
rng = WorksheetFunction.Unique(ws1.Columns(1)) ws2.Range("A1").Resize(UBound(rng)).Value = rng
(マナ) 2022/01/10(月) 11:43
早速ご教示いただきましてありがとうございます。もこな2様のおっしゃる通りですね。マナ様からご教示いただきました2つ目のコードでもうまくいきました。
ありがとうございました。
(Lion) 2022/01/10(月) 11:52
【参考】 http://officetanaka.net/excel/vba/tips/tips80.htm
当初思っていたのとちょっと違うかもしれませんがこういう感じとか。
Sub 研究用1() Stop 'ブレークポイントの代わり(以下ステップ実行して研究のこと)
Dim Dic, i As Long Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1") '重複データを除きながら【連想配列】に格納する On Error Resume Next For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row Dic.Add .Cells(i, "A").Value, "" Next i On Error GoTo 0 End With Worksheets("Sheet2").Range("A1").Resize(Dic.Count).Value = WorksheetFunction.Transpose(Dic.Keys)
'一次元配列に格納することがマストなら Dim 配列 As Variant 配列 = Dic.Keys End Sub
(もこな2 ) 2022/01/10(月) 12:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.