返回列表 上一主題 發帖

[發問] EXCEL根據條件篩選

[發問] EXCEL根據條件篩選

各位大大, 有工作的員工能用函數按英文職位名稱排序嗎?
求各位指教,謝謝!

book.zip (7.29 KB)

回復 1# ffff56666


    函數我想不到...
不過可以用簡單的巨集解決你的問題。
  1. Private Sub CommandButton1_Click()
  2. [G2:I1000] = ""
  3. [L2:N1000] = ""
  4. For Each aa In Range([A2], [A2].End(xlDown))
  5. Select Case aa.Offset(, 3)
  6.     Case "Yes"
  7.         nextrow = Sheets("Sheet1").Cells(Rows.Count, 7).End(xlUp).Row + 1
  8.         form = 7
  9.     Case "No"
  10.         nextrow = Sheets("Sheet1").Cells(Rows.Count, 12).End(xlUp).Row + 1
  11.         form = 12
  12. End Select
  13. Cells(nextrow, form) = nextrow - 1
  14. Cells(nextrow, form + 1) = aa.Offset(, 1)
  15. Cells(nextrow, form + 2) = aa.Offset(, 2)
  16. Next
  17. End Sub
複製代碼

book.rar (22.99 KB)

一分努力,一分收穫。
發問題前可以先搜索內文是否有相關範例。

TOP

(先)H2:I2{=IFERROR(INDEX(B:B,RIGHT(SMALL(IF($D$2:$D$9="Yes",CODE($B$2:$B$9)/1%+ROW(B$2:B$9)),ROW(A1)),2)),"")

G2=IF(H2="","",COUNTIF(H$2:H2,"<>"))
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

謝謝各位解答, 問題解決了

TOP

謝謝論壇,謝謝各位前輩
後學學習陣列與字典,(割雞牛刀)方法學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr(1 To 1000, 1 To 3), V, Z, i&, R&, N&, T$
'↑宣告變數
Set Z = CreateObject("Scripting.Dictionary")
'↑令Z變數是 字典
Brr = Range([D2], [B65536].End(3))
'↑令Brr變數是 二維陣列,以B~D欄儲存格值帶入陣列中
With [G2].Resize(UBound(Brr), 3)
'↑以下是關於[G2]擴展向下Brr陣列縱向最大索引列號,向右擴展3欄範圍儲存格的程序
   .Value = Brr
   '↑令該區域儲存格值是 Brr陣列值
   .Sort KEY1:=.Item(3), Order1:=2, Header:=2, _
         Key2:=.Item(1), Order2:=1, Header:=2, Orientation:=1
   '↑令該區域儲存格做排序
   Brr = .Value: .ClearContents: .Offset(0, 5).ClearContents
   '↑令Brr陣列換裝盛排序過後的該區域儲存格值,
   '令結果區域儲存格清除內容

End With
For i = 1 To UBound(Brr)
'↑設順迴圈
   T = Brr(i, 3): V = Z(T)
   '↑令T變數是第1欄陣列值,V變數是T變數查Z字典的item
   If Not IsArray(V) Then V = Crr
   '↑如果V變數不是陣列? True就令V變數是Crr陣列
   R = Z(T & "|r") + 1: Z(T & "|r") = R
   '↑令R變數是T變數連接"|r"組成的新字串查Z字典item值+1,
   '令T變數連接"|r"組成的字串在Z字典的key,所對應的item是 R變數

   V(R, 1) = R: V(R, 2) = Brr(i, 1): V(R, 3) = Brr(i, 2)
   '↑令V陣列依序寫入值
   Z(T) = V
   '↑令V陣列放回Z字典中
Next
For Each V In Z.KEYS
'↑設逐項迴圈!令V變數是Z字典的key
   If Not IsArray(Z(V)) Then GoTo i01
   '↑如果以V變數查Z字典回傳item不是陣列? True就跳到標示i01位置繼續執行
   Cells(2, 7 + N * 5).Resize(Z(V & "|r"), 3) = Z(V)
   '↑令字典中的陣列item寫入儲存格中
   N = N + 1
   '↑令N變數累加1
i01: Next
Set Z = Nothing: Erase Brr, Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題