返回列表 上一主題 發帖

兩組數值去除重複的資料後排序

兩組數值去除重複的資料後排序

本帖最後由 henry860608 於 2023-3-19 20:31 編輯

已知A、B兩列有兩組數值,想要透過公式將兩組數值有重複的部分去除,並將資料依數值大小排序(如下面C列)

A        B
1        1
3        4
6        7
9        9
12        10
15        14
18        16
21        18
24        22
27        37
30        46
33        57
36        80


C
1
3
4
6
7
9
10
12
14
15
16
18
21
22
24
27
30
33
36
37
46
57
80

本帖最後由 Andy2483 於 2023-3-23 15:24 編輯

回復 9# quickfixer
回復 13# henry860608

謝謝前輩
練習應用於以下論壇鏈結帖,請前輩指教
http://forum.twbts.com/redirect. ... o=lastpost#lastpost
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 11# Andy2483


    好喔,等小的參考其他大老的方法後就會傳上來給各位參考

TOP

回復 11# Andy2483


    好喔,等小的參考其他大老的方法後就會傳上來給各位參考

TOP

回復 9# quickfixer
回復 10# singo1232001


    謝謝論壇,謝謝前輩指導
待應用的機會使用,謝謝
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 singo1232001 於 2023-3-21 23:16 編輯

回復 7# henry860608

倘若沒學過SQL 可以直接跳過 使用其他大大的解法比較方便 學習路線也比較正規

另外使用此方法都需要安裝 .Framework 3.5
包括q大的arraylist

以下解釋q值中,SQL語法解釋

select distinct a from
(select a as a from [工作表1$A1:A]
union all
select b as a from [工作表1$B1:B] )  
                                                                order by a



1.
獲取工作表1中的A欄資料
select a as a from [工作表1$A1:A]

合併
union all

工作表1中的B欄資料
select b as a from [工作表1$B1:B]


2.
select distinct a from      '將1.部分獲取整理好的資料 distinct去重
(select a as a from [工作表1$A1:A]
union all
select b as a from [工作表1$B1:B] )  
                                                                order by a    '並且order by排序


若你對SQL有興趣 從2019年後,免費網路課程非常多 尤其B站上 從零開始學 大概2~3個月就可以
真正意義上並不是拿來給excel單獨用的
只不過剛好可以拿vba訓練語法  實際用在SQL server 與vba上
面對現實的高負荷場景,超過30000筆以上的資料 或者多表整合 就是SQL的罩門
尤其在內網中 多台電腦 進銷存 或者接爬蟲上都有很強大的便利性  而且不用擔心 資料編碼異常 比如"温" "羣" 這類excel 會異常的文字
當然未來也能運用到ptSQL 或者MySQL

TOP

回復 8# Andy2483


例如activex combobox
  Sheets("工作表1").ComboBox1.List = arr.toarray
    Sheets("工作表1").ComboBox1.ListIndex = 0

   

TOP

回復 6# quickfixer


    謝謝前輩
這方法沒有將值寫入儲存格就可排序,若用於自訂表單中清單明細的收集不重複後排序,好像很方便
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 4# singo1232001
不好意思大大,可以問一下這四行是甚麼意思?
小弟對SQL涉獵淺薄
  1. q = "select a as a from [工作表1$A1:A] " & vbCrLf & " union all "
  2. q = q & vbCrLf & " select b as a from [工作表1$B1:B]"
  3. q = "select distinct a from (" & q & ")  order by a "
  4. s.Range("d2").CopyFromRecordset .Execute(q)
複製代碼

TOP

回復 1# henry860608


   


Sub test()
    Dim arr   As Object, brr As Variant
    Set arr = CreateObject("System.Collections.ArrayList")
    brr = Range("A1:B" & Cells(Rows.Count, "A").End(xlUp).Row)
    For Each n In brr
        If n <> vbNullString And Not arr.contains(n) Then arr.Add (n)
    Next
    arr.Sort
    Range("c1:c" & arr.Count) = Application.Transpose(arr.toarray)
End Sub

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題