TrungChinhs
Thành viên tích cực
- Tham gia
- 18/2/08
- Bài viết
- 1,475
- Được thích
- 2,469
- Nghề nghiệp
- Công chức
Option Explicit
Sub stt()
Dim i As Integer, j As Integer, k As Integer, lRow As Integer
lRow = [C65536].End(xlUp).Row
j = 0
With [A1]
For i = 1 To lRow - 1
If Len(.Offset(i, 2).Value) = 0 Then
j = j + 1
.Offset(i).Value = j
k = 0
Else
k = k + 1
.Offset(i).Value = j & "_" & k
End If
Next
End With
End Sub
Option Explicit
Sub GhiSoTT()
Dim lRow As Long, Ff As Long
Dim JjB As Integer, jJC As Integer
lRow = [c65500].End(xlUp).Row
Range([a2], Cells(lRow + 9, "A")).Clear
For Ff = 2 To lRow
With Cells(Ff, 1)
If .Offset(, 1) <> "" Then
jJC = 0: JjB = JjB + 1
.Value = JjB: .Font.Bold = True
.HorizontalAlignment = xlCenter
Else
jJC = jJC + 1: .Value = JjB & "." & jJC
End If
End With
Next Ff
End Sub
PHP:Option Explicit Sub GhiSoTT() Dim lRow As Long, Ff As Long Dim JjB As Integer, jJC As Integer lRow = [c65500].End(xlUp).Row Range([a2], Cells(lRow + 9, "A")).Clear For Ff = 2 To lRow With Cells(Ff, 1) If .Offset(, 1) <> "" Then jJC = 0: JjB = JjB + 1 .Value = JjB: .Font.Bold = True .HorizontalAlignment = xlCenter Else jJC = jJC + 1: .Value = JjB & "." & jJC End If End With Next Ff End Sub
Option Explicit
Sub GhiSoTT()
Dim lRow As Long, Ff As Long
Dim JjB As Integer, jJC As Integer
lRow = [c65500].End(xlUp).Row
Range([a2], Cells(lRow + 9, "A")).Clear
For Ff = 2 To lRow
4 With Cells(Ff, 1)
If .Offset(, 1) <> "" Then
jJC = 0: JjB = JjB + 1
.Value = JjB: .Font.Bold = True
.HorizontalAlignment = xlCenter
9 ElseIf .Offset(, 1) = "" And .Offset(, 2) <> "" Then
jJC = jJC + 1: .Value = JjB & "." & jJC
11 If jJC Mod 10 = 0 Then .Offset().NumberFormat = "0.00"
End If
End With
Next Ff
End Sub
Đã khắc phục bằng dòng lệnh 11, đã sửa so với trước;- các số n.n0 đánh thành n.n (vd 1.10 đánh thành 1.1; 3.20 đánh thành 3.2 ...).
Đã sửa lại bằng dòng lệnh 9- các dòng rỗng vẫn đánh STT
Con số 1 trong dòng lệnh 4 biểu thị cho cột 'A'nếu muốn STT được đánh tại một cột bất kỳ (không phải là cột A) thì sửa code NTN ?
4 With Cells(Ff, "A")
Sub STT()
Dim Rng As Range, Clls As Range
Dim Stt1 As Long, Stt2 As Long
Set Rng = Range("E2:E" & [G65536].End(xlUp).Row)
Rng.ClearContents
For Each Clls In Rng
If Clls.Offset(, 1) <> "" Then
Stt1 = Stt1 + 1: Clls = Stt1: Stt2 = 0
Else:
If Clls.Offset(, 2) <> "" Then
Stt2 = Stt2 + 1
Clls = Stt1 & "." & Format(Stt2, "00")
End If
End If
Next
End Sub
Có phải bạn muốn 1.01 thành 1.1 và 1.10 là 1.10Bác ndu96081631 ơi STT kiểu tex không đánh được các số 0 hàng chục (hết .9 lại đến .1 hoặc .2, ... không đánh được .10, .20, ...) Bác xem lại và sửa giúp nhé, Cảm ơn bác nhiều !
Có phải bạn muốn 1.01 thành 1.1 và 1.10 là 1.10
Bạn sử dòng code của ndu như sau:
Clls = Stt1 & "." & Format(Stt2, "00")
thành
Clls = Stt1 & "." & Stt2
Sửa lại thế này nha:Cảm ơn Bác! Em đã sửa nhưng vẫn không đựơc
Sub STT()
Dim Rng As Range, Clls As Range
Dim Stt1 As Long, Stt2 As Long
Set Rng = Range("E2:E" & [G65536].End(xlUp).Row)
Rng.ClearContents
For Each Clls In Rng
Clls.HorizontalAlignment = 3: Clls.NumberFormat = "@"
If Clls.Offset(, 1) <> "" Then
Stt1 = Stt1 + 1: Clls = Stt1: Stt2 = 0
Else:
If Clls.Offset(, 2) <> "" Then
Stt2 = Stt2 + 1: Clls = Stt1 & "." & Stt2
End If
End If
Next
End Sub