- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
4#
發表於 2022-9-19 10:03
| 只看該作者
本帖最後由 Andy2483 於 2022-9-19 10:07 編輯
回復 1# jackyliu
謝謝前輩發表此主題
VBA方式供參考
後學今天捨近求遠
1.練習變數名參數化
2.更親近字典
後學很想學習不一樣的技巧! 先謝謝各位前輩幫訂正錯誤並再指導!- Option Explicit
- Sub 欄位內容包含ABC文字判斷()
- 'B欄輸入時數,C欄呈現累加後時間
- 'A欄包含ABC,在D欄="上簽"
- 'A欄包含ADEM,在D欄="下簽"
- 'A欄不包含ABC且不包含ADEM,在D欄="略過"
- 'A欄包含ABC且包含ADEM,在D欄="上簽+下簽"
- Dim Arr, i, Y, Z(1 To 3)
- Set Y = CreateObject("Scripting.Dictionary")
- Y = Array("上簽", "下簽", "略過")
- Arr = [A2].CurrentRegion
- For i = 2 To UBound(Arr)
- Z(1) = Arr(i, 2) / 24 + Arr(i - 1, 3)
- Z(2) = InStr(Arr(i, 1), "ABC")
- Z(3) = InStr(Arr(i, 1), "ADEM")
- Arr(i, 3) = IIf(Arr(i, 2), Z(1), "")
- If Z(2) <> 0 And Z(3) <> 0 Then
- Arr(i, 4) = Y(0) & "+" & Y(1)
- ElseIf Z(2) = 0 And Z(3) = 0 Then
- Arr(i, 4) = Y(2)
- ElseIf Z(3) = 0 Then
- Arr(i, 4) = Y(0)
- Else
- Arr(i, 4) = Y(1)
- End If
- Next
- [A2].Resize(UBound(Arr), UBound(Arr, 2)) = Arr
- End Sub
複製代碼 |
|