Nguyễn Hương Thơm đã viết:Các anh chị làm ơn cho em hỏi, VD ở cột A là cột STT(số thứ tự) em muốn cột này có công thức tự nhảy theo thứ tự khi em đánh data vào cell B1, thì làm thế nào? Tks- NHT
[b]Private Sub Worksheet_Change(ByVal Target As Range)[/b]
If Not Intersect(Target, Range("B2:B9999")) Is Nothing Then
Target.Offset(, -1).Value = Target.Offset(-1, -1).Value + 1
End If[b]
End Sub[/b]
SA_DQ đã viết:( Nhưng chỉ thuận tiện nhập dữ liệu cho CSDL mà thôi!)Mã:[b]Private Sub Worksheet_Change(ByVal Target As Range)[/b] If Not Intersect(Target, Range("B2:B9999")) Is Nothing Then Target.Offset(, -1).Value = Target.Offset(-1, -1).Value + 1 End If[b] End Sub[/b]
Thien đã viết:Nếu muốn dòng 1 & dòng 2 giống nhau thì không đánh số STT, sang dòng 3 khác dòng 2 thì đánh STT, nếu dòng 4 giống dòng 3 thì không đánh STT....
Bác sữa lại code được không.
TC.
Option Explicit[b]
Private Sub Worksheet_Change(ByVal Target As Range)[/b]
If Not Intersect(Target, Range("B2:B9999")) Is Nothing Then
If Target.Value <> Target.Offset(-1) Then[COLOR="Blue"] '** **[/COLOR]
Target.Offset(, -1).Value = Target.Offset(, -1).End(xlUp).Value + 1
End If: End If[b]
End Sub[/b]
SA_DQ đã viết:Mã:Option Explicit[b] Private Sub Worksheet_Change(ByVal Target As Range)[/b] If Not Intersect(Target, Range("B2:B9999")) Is Nothing Then If Target.Value <> Target.Offset(-1) Then[COLOR="Blue"] '** **[/COLOR] Target.Offset(, -1).Value = Target.Offset(, -1).End(xlUp).Value + 1 End If: End If[b] End Sub[/b]
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo THOAT
If Not Intersect(Target, Range("B2:B9999")) Is Nothing Then
If Target.Value <> "" Then
Target.Offset(, -1).Value = Target.Offset(, -1).End(xlUp).Value + 1
Else
Target.Offset(, -1).Value = ""
End If: End If
THOAT:
Exit Sub
End Sub
anhtuan1066 đã viết:Nhưng tôi ko muốn thế... Thật ra có khi mình cũng cần Insert Row ấy chứ... vậy làm sao STT cũng sẽ tự động dc cập nhật?
Function ActivateInsertRow() As Boolean
Dim wrksht As Worksheet
Dim objList As ListObject
Dim objListRng As Range
Set wrksht = ActiveWorkbook.Worksheets(1)
Set objList = wrksht.ListObjects(1)
Set objListRng = objList.InsertRowRange
If objListRng Is Nothing Then
ActivateInsertRow = False
Else
objListRng.Activate
ActivateInsertRow = True
End If
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row < 20 Then
Cells(Target.Row, 1).Value = Cells(Target.Row - 1, 1).Value + 1
End If
End Sub
Public Sub STT()
Dim iRow As Integer
Rw = 1
iRow = Range("A65000").End(xlUp).Row
Columns("A:A").ClearContents
For Numb = 1 To iRow
Cells(Rw, "A") = Numb
Rw = Rw + 1
Next Numb
End Sub
Nguyễn Hương Thơm đã viết:Các anh chị làm ơn cho em hỏi, VD ở cột A là cột STT(số thứ tự) em muốn cột này có công thức tự nhảy theo thứ tự khi em đánh data vào cell B1, thì làm thế nào? Tks- NHT
Thì code như đã nói ở trên đóduongsatdn đã viết:Bác Anh Tuấn ơi, bác ổn rồi mà người khác chưa ổn đâu. Bác chia sẻ cho em cái code cuối cùng của bác mà "ổn rồi" đi bác.
Nghĩa là đánh STT vào cột A dựa vào dử liệu ở cột B... Có điều nếu cải tiến thêm 1 chút: dòng nào ở cột B có dử liệu mới đánh STT, giống như công thức =IF(B2="","",MAX($A$1:A1)+1).. nếu dc thế sẽ hay hơnPublic Sub STT()
Dim iRow As Integer
Rw = 1
iRow = Range("B65000").End(xlUp).Row
Columns("A:A").ClearContents
For Numb = 1 To iRow
Cells(Rw, "A") = Numb
Rw = Rw + 1
Next Numb
End Sub
Public Sub STT()
Dim iRow As Integer
Numb = 0
iRow = Range("B65000").End(xlUp).Row
Columns("A:A").ClearContents
For Rw = 1 To iRow
If Cells(Rw, "B") <> "" Then
Numb = Numb + 1
Cells(Rw, "A") = Numb
End If
Next Rw
End Sub
Anh Minhlev ơi, cái này paste vào module à? vì em chưa hiểu về VBA. Anh có thể giải thích cơ bản nếu nhìn vào code tác giả viết thì làm thế nào để biết paste code vào module hay worksheet hay sheet... Cảm ơn anh trc. NHTminhlev đã viết:Xin phép được chỉnh lại code của Bác anhtuan1066 một chút. Bác xem thử như thế có được không?
Mã:Public Sub STT() Dim iRow As Integer Numb = 0 iRow = Range("B65000").End(xlUp).Row Columns("A:A").ClearContents For Rw = 1 To iRow If Cells(Rw, "B") <> "" Then Numb = Numb + 1 Cells(Rw, "A") = Numb End If Next Rw End Sub
Bác thử code sau xem.anhtuan1066 đã viết:Có lý... chạy dc rồi... cám ơn bạn minhlev...
Ko biết có thể cho nó chạy ở chế độ Worksheet_change ko nhỉ? Tôi đã thử và thấy ko ổn
Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
If Target.Column = 2 Then
Numb = 0
iRow = Range("B65000").End(xlUp).Row
Columns("A:A").ClearContents
For Rw = 1 To iRow
If Cells(Rw, "B") <> "" Then
Numb = Numb + 1
Cells(Rw, "A") = Numb
End If
Next Rw
End If
End Sub