- 日時: 2012/06/06 19:20
- 名前: VBレスキュー(花ちゃん)
- ***********************************************************************************
* カテゴリー:[エクセル][][] * * キーワード:Excel VBA,Excel2010,オートフィルター,データリスト,重複しないデータ * *********************************************************************************** '=================================================================================================== '投 稿 日:2012.05.06 '投 稿 者:VBレスキュー(花ちゃん) 'タイトル:Excel の指定列のデータから重複しないデータを抽出 '========1=========2=========3=========4=========5=========6=========7=========8=========9=========0
Private Sub Button21_Click(sender As System.Object, e As System.EventArgs) Handles Button21.Click Call ExcelOpen("", "") '新規ファイルをオープンして、Excel を起動 '================ 指定列のデータから重複しないデータを抽出 ===================
'-------------------- 下記のVB6.0用コードを移植 --------------------------- ' http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=128&no=13 '--------------------------------------------------------------------------
'仮データの書込み Dim Dat(9, 0) As Object Dat(0, 0) = "品 名" : Dat(1, 0) = "みかん" : Dat(2, 0) = "トマト" Dat(3, 0) = "いちご" : Dat(4, 0) = "みかん" : Dat(5, 0) = "トマト" Dat(6, 0) = "いちご" : Dat(7, 0) = "みかん" : Dat(8, 0) = "トマト" Dat(9, 0) = "いちご" Dim xlRange As Excel.Range xlRange = xlSheet.Range("B2:B11") xlRange.Value = Dat MRComObject(xlRange) '確認のために、1秒間表示しておく System.Threading.Thread.Sleep(1000) '--------------------------------------------------------------------------
'B列のデータリストからオートフィルターを使って重複したものを除いたリストだけを抽出 xlRange = xlSheet.Range("B2:B11") Dim xlRange1 As Excel.Range xlRange1 = xlSheet.Range("B2") xlRange.AdvancedFilter(Excel.XlFilterAction.xlFilterInPlace, xlRange1, , True) MRComObject(xlRange)
'抽出したデータ件数を取得 xlRange = xlSheet.Range("B2") Dim xlEndRange As Excel.Range xlEndRange = xlRange1.End(Excel.XlDirection.xlDown) Dim Count, i As Integer Count = xlEndRange.Row MRComObject(xlEndRange) MRComObject(xlRange1) MRComObject(xlRange)
ListBox1.Items.Clear() For i = 3 To Count xlRange = xlSheet.Range(R1ToA1(i, 2)) If CInt(xlRange.RowHeight) > 0 Then '抽出したデータを取得 ListBox1.Items.Add(xlRange.Value.ToString) End If MRComObject(xlRange) Next i '確認のために、1秒間表示しておく System.Threading.Thread.Sleep(1000)
'============================================================================= 'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行 Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), False) 'False の場合保存しないで終了 'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし) Call ProcessCheck() End Sub
|