Board logo

標題: [發問] 依其他儲存格的條件取代字串 [打印本頁]

作者: savoir    時間: 2013-10-11 13:39     標題: 依其他儲存格的條件取代字串

本帖最後由 savoir 於 2013-10-11 13:41 編輯

公司的會計小姐每到月底就要花一整天取代各店班別代號才能匯入人事系統,而且很常出錯,
所以我希望能讓她們使用vba自動依條件取代代號,在各大論壇、網站搜尋、爬文似乎找不到符合需求的介紹,
因此誠心發問,希望能找出解決之道,讓會計大姊們不會一到月底想到班表就心慌慌^^

以下是取代前的班表,各店排班都是直接依照A、B、C、休下去排,
但因為假日上下班時間不同系統需要班別代號識別:
[attach]16303[/attach]

週一~週五:A班=A1;B班=B1;C班=C1
週六、周日:A班=A2;B班=B2;C班=C2
「休」不予取代。

取代完成後的班表會變成這樣:
[attach]16301[/attach]

因為平常只使用Excel函數功能,很少接觸vba,用巨集錄製後的程式是這樣:
  1. Sub 取代()
  2. '
  3. ' 取代 巨集
  4. '
  5. ' 快速鍵: Ctrl+i
  6. '
  7.     Cells.Replace What:="A", Replacement:="A1", LookAt:=xlPart, SearchOrder _
  8.         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  9.     Cells.Replace What:="B", Replacement:="B1", LookAt:=xlPart, SearchOrder _
  10.         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  11.     Cells.Replace What:="C", Replacement:="C1", LookAt:=xlPart, SearchOrder _
  12.         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  13. End Sub
複製代碼
但這樣沒辦法依照週六、週日有不同的班別代號,
想請前輩們指導應該如何設定條件取代成不同的代號,感激不盡!

[attach]16302[/attach]
作者: oobird    時間: 2013-10-11 14:09

  1. Sub 取代()
  2.     For Each c In ActiveSheet.UsedRange
  3.         If c.Value Like "[A,B,C]" Then
  4.             If Weekday(Cells(1, c.Column), 2) > 5 Then
  5.                 c.Value = c.Value & "2"
  6.             Else
  7.                 c.Value = c.Value & "1"
  8.             End If
  9.         End If
  10.     Next
  11. End Sub
複製代碼

作者: savoir    時間: 2013-10-11 15:06

本帖最後由 savoir 於 2013-10-11 15:07 編輯

回復 2# oobird
感謝oobird前輩的回覆,週六、週日的問題解決了!

假如有某些店是週五、週六上下班時間不同,
班別代號是A班=A2;B班=B2;C班=C2,
要如何做細部的修改呢?
作者: oobird    時間: 2013-10-11 16:29

本帖最後由 oobird 於 2013-10-11 16:30 編輯

你得把要求說清楚才有辦法。
試試把If Weekday(Cells(1, c.Column), 2) > 5 Then
改為If Weekday(Cells(1, c.Column), 2) > 4 Then
看看是不是你的意思。
作者: savoir    時間: 2013-10-23 19:19

本帖最後由 savoir 於 2013-10-23 19:20 編輯

回復 4# oobird

感謝版大回覆!
舉我們某個專櫃實際上班時間為例,

週一~週四:A班=A1、B班=B1、C班=C1
週五:A班=A1、B班=B2、C班=C3
週六:A班=A3、B班=B2、C班=C5
週日:A班=A3、B班=B1、C班=C2

紅字部分與原本A1、B1、C1的代號有所不同,
如同附件的取代前是原本的A、B、C班,取代後則有了A1、A3、B1、B2、C1、C2、C5等代號,
感謝版大解惑!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)