Vậy mai anh có thể làm rõ cho e một số vấn đề rồi ta tìm cách giải quyết.
1 - (giữa chừng mình xóa bớt công thức của vài ô thì công thức phía dưới sẽ nhận giá trị toàn bộ vùng fill mà tính tiếp.) : thì điểm bắt đầu là Max của vùng trên đoạn bị xóa?
Em tạm đưa công thức cho ô A2 (A1 vẫn có dữ liệu gốc)
Khi xóa 1 vùng thì nó sẽ lấy Max tiếp theo của vùng đó (số thứ tự liên tục)
Ý mình nói là viết một hàm tổng quát bằng VBA đó. Thử với hàm này nha:
[GPECODE=vb]Function MaxAddText(ByVal NumFormat As String, _
ByVal IDText As String, _
ParamArray MainArray()) As String
Dim Arr As Variant, Itm As Variant, SubArray As Variant, tmp As Variant, _
KeyText As String, LenKeyText As Long, TmpMax As Long
KeyText = UCase(IDText): LenKeyText = Len(KeyText): TmpMax = 0
For Each Arr In MainArray
SubArray = Arr
If Not IsArray(SubArray) Then SubArray = Array(SubArray)
For Each Itm In SubArray
If Right(UCase(Itm), LenKeyText) = KeyText Then
tmp = Val(Left(Itm, Len(Itm) - LenKeyText))
If TmpMax < tmp Then TmpMax = tmp
End If
Next
Next
MaxAddText = Format(TmpMax + 1, NumFormat) & KeyText
End Function
[/GPECODE]
Cấu trúc hàm như sau:
=MaxAddText(Phần định dạng, Kiểu chuỗi đuôi, Một hoặc Nhiều vùng tham chiếu)
Cụ thể trong bài đó mình có công thức:
=MaxAddText("0000","/4",$A$1:A1)
Nếu vùng tham chiếu không thuộc dãy số đó thì nó cho ra giá trị đầu tiên
0001/4