tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
Excel の指定列のデータから重複しないデータを抽出(VB.NET) ( No.23 )  [親スレッドへ]
日時: 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



 [スレッド一覧へ] [親スレッドへ]