返回列表 上一主題 發帖

[發問] 選項按鈕

回復 19# Michelle-W


    我的理解是最後做排序的動作,是這樣嗎?還是要再做另一個程序?
  1. Sub 統計()
  2.     co = Sheets("統計").Rows(1).SpecialCells(xlCellTypeConstants)
  3.     With Sheets("統計")
  4.         For Each Rng In .Rows(1).SpecialCells(xlCellTypeConstants)
  5.             ro = .Cells(.Rows.Count, Rng.Column).End(xlUp).Row
  6.             If ro > 2 Then .Range(.Cells(3, Rng.Column), .Cells(ro, Rng.Offset(, 2).Column)).Clear
  7.             ro = 0
  8.         Next
  9.     End With
  10.     co = Cells(1, Columns.Count).End(xlToLeft).Column
  11.     ro = Cells(Rows.Count, 1).End(xlUp).Row
  12.     For Each Rng In Range("C2", Cells(ro, co)).SpecialCells(xlCellTypeConstants)
  13.         If Rng.Value Like "●" Then
  14.             With Sheets("統計")
  15.                 Set c = .Rows(1).Find(Cells(1, Rng.Column))
  16.                  If Not c Is Nothing Then
  17.                     ro = .Cells(Rows.Count, c.Column).End(xlUp).Row + 1
  18.                     .Cells(ro, c.Column) = Cells(Rng.Row, 1)
  19.                     .Cells(ro, c.Offset(, 1).Column) = Cells(Rng.Row, 2)
  20.                     '''.擷取人名
  21.                     T = Split(Cells(Rng.Row, 1) & "//", "//")(1)
  22.                     T = Split(T & "/", "/")(0)
  23.                     If T <> "" Then .Cells(ro, c.Offset(, 2).Column) = T
  24.                     ''''寫入新增
  25.                     Set cr = Sheets("新增").Columns(1).Find(Cells(Rng.Row, 1)) '查詢在哪一列
  26.                     If Not cr Is Nothing Then
  27.                         Set cc = Sheets("新增").Rows(1).Find(c.Value) '查詢在哪一欄
  28.                         If Not cc Is Nothing Then
  29.                             Sheets("新增").Cells(cr.Row, cc.Column) = Rng.Value '然後放入"●"
  30.                         End If
  31.                     End If
  32.                 End If
  33.                 Set c = Nothing
  34.                 Set sr = Nothing
  35.                 Set cc = Nothing
  36.             End With
  37.         End If
  38.     Next
  39.     ''''排序
  40.     Set Rng = Sheets("新增").Range("a1").CurrentRegion
  41.     For i = Rng.Columns.Count To 3 Step -1
  42.          Rng.Sort Key1:=Rng(1, i), Order1:=xlAscending, Header:=xlYes
  43.     Next

  44. 'Module1.擷取人名<<<這裡可以不用啦!
  45. End Sub
複製代碼

TOP

發問題要說得清楚需求, 不然就是亂猜, 很費往返時間!
以下做個草解, 都是基礎程式碼, 就不做說明:
Xl0000099.rar (19.16 KB)

TOP

本帖最後由 Michelle-W 於 2016-8-25 19:58 編輯

回復 20# GBKEE

謝謝版主大大協助,是一個全新的撰寫方式
我可能要在花點時間重新理解一下,對初學者來說有一點深奧^^”


回復 21# lpk187

謝謝L大,這樣就可以了~~!!
只是...新增工作表那邊是怎麼比對,才能跑出●
如果您覺得解釋麻煩也可以省略沒關係,我再繼續研究
不好意思麻煩您這麼久...^^"


回復 22# 准提部林

謝謝准大出手協助~~~!!
我問的方式確實真的沒有講得很清楚,造成各位前輩的困擾了^^"
想要請教您一下
這段更新程式碼的意思嗎....QQ

TOP

本帖最後由 准提部林 於 2016-8-25 21:08 編輯

回復 23# Michelle-W


大概猜〔新增〕工作表是人員總表,含所有新舊人員,
而〔選擇〕工作表應是目前有用到的人員,
〔更新〕是使用公式將〔選擇〕工作表有填入"●"的相對儲存格也抓進夾,
C2:=OFFSET(選擇!$A$1,MATCH($A2,選擇!$A:$A,)-1,MATCH(C$1,選擇!$1:$1,)-1)&""
公式右拉下拉,就可以了解公式用意,
程式會將公式貼成〔值〕,再將錯誤值"#N/A"〔取代〕為空,
最後〔依左而右〕將有"●"的人員往上提,沒有的擺下面,
不過要達到〔依左而右〕往上提,排序順序反而是相反的>>由右而左逐一排序,才能達到這效果,
這是獨立的程式,只處理〔新增〕工作表的部份!

Xl0000099_註解版.rar (19.23 KB)
 
 

TOP

本帖最後由 Michelle-W 於 2016-8-25 22:13 編輯

回復 24# 准提部林


版大~可以再請教您一下嗎?
如同您說的,我問題真的沒敘述清楚 ,真的很抱歉
如果只看sheet("統計")跟sheet("新增")

sheet("新增")的人員跟sheet("統計")的Name做包含比對
各項目人名有出現過的一樣是●,且照順序排列...
這樣的話程式碼應該如何撰寫?><

(sheet("新增")的人員跟選擇的人員,其實後面XXX是不一樣的QQ",以Match比對不出來)

TOP

回復 23# Michelle-W


    Qestion(內含解釋).rar (29.85 KB)

TOP

回復 25# Michelle-W


[統計]表的來源不是從[選擇]表來的嗎?
[新增]表從[選擇]表去取, 又有何不同?

[人員]的格式不相同?
上傳更完整的資料及正確文字結構, 才能看怎麼處理!

另應以lpk大大的為主要解, 我較沒時間跟帖, 只能插花當參考!

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題