- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
4#
發表於 2023-4-25 07:49
| 只看該作者
回復 3# gaishutsusuru
謝謝論壇,謝謝前輩回復
公式很難,後學還沒那個功力設計,以下是將#2樓改成自訂函數的學習方案,請前輩參考
使用方式與結果:
Option Explicit
Function GetSerial(ST$)
Dim Brr, Z$, X, Q, K$, V0$, V1$, T0$, T1$, i&, M%, Y%
Dim D As Date, P As Date, P1 As Date
Brr = Range([A1], Cells(Rows.Count, 1).End(3))
T0 = ST: V0 = Mid(T0, InStr(T0, "_") + 1)
Y = Left(Val(T0), 4): M = Val(Right(Val(T0), 2))
D = CDate(Y & "/" & M & "/01")
For i = 1 To UBound(Brr)
T1 = Brr(i, 1): V1 = Mid(T1, InStr(T1, "_") + 1)
Y = Left(Val(T1), 4): M = Val(Right(Val(T1), 2))
Y = Y + M \ 12: M = M Mod 12 + 1
P = CDate(Y & "/" & M & "/01") - 1
If (T0 = T1) + (V0 <> V1) + (P > D) Then GoTo i01
If P1 - Date < P - Date Then
P1 = P: Z = Format(P1, "YYYYMM") & "_" & V0
End If
i01: Next
GetSerial = IIf(Z <> "", Z, "無")
Erase Brr
End Function |
|