Các câu hỏi về việc Đánh Số Thứ Tự (STT)

Liên hệ QC
cho mình hỏi vần đề về STT trong sutotal????
vd như mình có file như sau: STT, HỌ TÊN, NGÀY NHẬN, LƯƠNG
mình tạo tổng số phụ theo học tên , lấy sum của lương
giờ mình muốn hỏi có cách nào đánh STT mà Tổng số phụ theo tên ko bị ảnh hưởng,
cứ mỗi tên ta có stt 123..
Vd: STT Họ Tên Ngày nhận Lương
1 A 1/2/10 50
2 A 3/6/10 30
A total 80
1 B 50
2 B 20
B total 70
1 C 10
C Total 10


....... với danh sách dữ liệu mà dài thòng lòng mà ngồi chỉnh STT theo thủ công thì chắc tiêu quá , ai biết thì giúp mình với...
thanksssssssssssssss
 
cho mình hỏi vần đề về STT trong sutotal????
vd như mình có file như sau: STT, HỌ TÊN, NGÀY NHẬN, LƯƠNG
mình tạo tổng số phụ theo học tên , lấy sum của lương
giờ mình muốn hỏi có cách nào đánh STT mà Tổng số phụ theo tên ko bị ảnh hưởng,
cứ mỗi tên ta có stt 123..
Vd: STT Họ Tên Ngày nhận Lương
1 A 1/2/10 50
2 A 3/6/10 30
A total 80
1 B 50
2 B 20
B total 70
1 C 10
C Total 10


....... với danh sách dữ liệu mà dài thòng lòng mà ngồi chỉnh STT theo thủ công thì chắc tiêu quá , ai biết thì giúp mình với...
thanksssssssssssssss
Trước khi thực hiện subtotal, tại ô A2 bạn gõ:=COUNTIF($B$1:B1;B2)+1
sau đó coppi cho các dòng khác
 
Sửa dùm em code số thứ tự tăng dần

Em có 1 file nhập liệu bằng Form. Em đã viết code cho nó rùi. Nhưng vấn đề em muốn hỏi ở chỗ: Em muốn số thứ tự tăng dần sau khi chọn nút lưu.
(Câu hỏi cụ thể trong file đính kèm)
 

File đính kèm

  • cau hoi.rar
    94.8 KB · Đọc: 54
Hãy làm chuyện đơn giản đi: bỏ textbox STT, gán xuống sheet các textbox khác như cũ, còn STT cột A thì bằng số STT kề trên cộng 1:
PHP:
.Cells(iRow, 1) = .Cells(iRow - 1, i) +1
Còn nếu cứ muốn dùng textbox, nếu suy nghĩ đơn giản thì cũng có cách làm đơn giản: Dùng 1 biến:

Khi mở form: cho biến có giá trị bằng STT của cells(iRow-1, 1) + 1. Gán textbox1 = biến.
Khi nhấn nút: cho biến tăng 1, gán các textbox xuống sheet, xoá hết textbox, riêng textbox1 thì bằng biến đó.
Chuyện không cần đi học cũng làm được.

Còn 1 chuyện cần làm: Kiểm tra mã không được trùng. Phải thấy chuyện cần làm, còn những chuyện khác thì hãy suy nghĩ đơn giản.
 
Lần chỉnh sửa cuối:
Em có 1 file nhập liệu bằng Form. Em đã viết code cho nó rùi. Nhưng vấn đề em muốn hỏi ở chỗ: Em muốn số thứ tự tăng dần sau khi chọn nút lưu.
(Câu hỏi cụ thể trong file đính kèm)
Đúng là bài này không cần phải phức tạp! Như sư phụ Mỹ là được rồi
Ở đây giới thiệu bạn cách khác (không hẳn phức tạp nhưng ít người biết)
1> Code trong CommandButton1_Click của bạn có đoạn
PHP:
Me.Controls("TextBox" & i) = ""
Hãy sửa lại thành:
PHP:
If i > 1 Then Me.Controls("TextBox" & i) = ""
Và thêm vào cuối code 2 dòng:
PHP:
SaveSetting "iNum", "cNum", "Pos", TextBox1.Value
TextBox1.Value = Val(GetSetting("iNum", "cNum", "Pos", 0)) + 1
2> Thêm sự kiện UserForm_Initialize
PHP:
Private Sub UserForm_Initialize()
  TextBox1.Value = Val(GetSetting("iNum", "cNum", "Pos", 0)) + 1
End Sub
 
Tự cập nhật thêm số thứ tự

Em có bài tập này. Em đã có code rùi. Nhưng giờ em muốn khi cập nhật có thêm số thứ tự nữa thì em vẫn chưa làm được. Em nhờ AC bổ xung thêm dùm em nhé!
PHP:
Option Explicit
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 1).Resize(, 3) = S1.Range("A2:C2").Value
    End With
    S1.Range("A2:C2").ClearContents
End Sub
 

File đính kèm

  • Btap.rar
    7.4 KB · Đọc: 33
Em có bài tập này. Em đã có code rùi. Nhưng giờ em muốn khi cập nhật có thêm số thứ tự nữa thì em vẫn chưa làm được. Em nhờ AC bổ xung thêm dùm em nhé!
PHP:
Option Explicit
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 1).Resize(, 3) = S1.Range("A2:C2").Value
    End With
    S1.Range("A2:C2").ClearContents
End Sub
Bạn thử xem thế nào.
PHP:
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 2).Resize(, 3) = S1.Range("A2:C2").Value
         .Range("A2").Value = "=+IF(RC[1]="""","""",MAX(R1C1:R[-1]C)+1)"
      .Range("A2").AutoFill Destination:=.Range("A2:A100")
      .Range("A2:A100").Copy
     .Range("A2").PasteSpecial Paste:=xlPasteValues
    End With
    S1.Range("A2:C2").ClearContents
End Sub
 
Bạn thử xem thế nào.
PHP:
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 2).Resize(, 3) = S1.Range("A2:C2").Value
         .Range("A2").Value = "=+IF(RC[1]="""","""",MAX(R1C1:R[-1]C)+1)"
      .Range("A2").AutoFill Destination:=.Range("A2:A100")
      .Range("A2:A100").Copy
     .Range("A2").PasteSpecial Paste:=xlPasteValues
    End With
    S1.Range("A2:C2").ClearContents
End Sub

Code này của bạn được rùi. Nhưng mình thấy có dùng cái này nữa: Evaluate("ROW(R:R)"), mình đã làm thế này mà vẫn chưa được.
PHP:
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 2).Resize(, 3) = S1.Range("A2:C2").Value
        .Cells(eR, 1) = Evaluate("ROW(R:R)")
    End With
    S1.Range("A2:C2").ClearContents
End Sub
Không biết sai chỗ nào nữa mà vẫn chưa Ok đó!
 
cái này mình e không đuợc :
PHP:
.Cells(eR, 1) = Evaluate("ROW(R:R)")
Bạn thử xem cái này xem sao?

PHP:
Sub cap_nhat()
    Dim eR As Long
    eR = S2.Range("B65535").End(xlUp).Row + 1
    With S2
        .Cells(eR, 2).Resize(, 3) = S1.Range("A2:C2").Value
        Dim i
        For i = 2 To eR
        .Cells(i, 1) = i - 1
        Next i
    End With
    S1.Range("A2:C2").ClearContents
End Sub
 
Code này của bạn được rùi. Nhưng mình thấy có dùng cái này nữa: Evaluate("ROW(R:R)"), mình đã làm thế này mà vẫn chưa được.
PHP:
Sub cap_nhat()
Dim eR As Long
eR = S2.Range("B65535").End(xlUp).Row + 1
With S2
.Cells(eR, 2).Resize(, 3) = S1.Range("A2:C2").Value
.Cells(eR, 1) = Evaluate("ROW(R:R)")
End With
S1.Range("A2:C2").ClearContents
End Sub
Không biết sai chỗ nào nữa mà vẫn chưa Ok đó!

Bạn sửa lại dòng:
PHP:
.Cells(eR, 1) = Evaluate("ROW(R:R)")
thành:
PHP:
.Range(.[B2], .[B65535].End(xlUp)).Offset(, -1) = Evaluate("ROW(R:R)")
xem sao nhé!
 
Sửa dùm em code đánh số thứ tự

Em có 1 file đã viết code chèn số tự động. Nhưng không hiểu sao nó vẫn không cho kết quả theo ý muốn. AC hoàn thiện dùm em nhé!
Code là:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WF
    Dim i As Long
    Set WF = Application.WorksheetFunction
    i = Range("B65535").End(xlUp).Row
    If Not Intersect(Range("B10:B" & i), Target) Is Nothing Then
        Range("A" & i).Formula = WF.Count(Range("A11:A" & i)) + 1
    End If
End Sub
 

File đính kèm

  • GPEt.rar
    7.2 KB · Đọc: 114
Lần chỉnh sửa cuối:
Không tự động chèn số thứ tự

Em có file này, em viết code rùi nhưng không hiểu sao nó vẫn không tự động đánh số thứ tự được. AC xem và hoàn thiện dùm em nhé!

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Max As Integer
    Dim eR As Long, i As Long
    If Target.Address = "$F$1" Then
        Range("A5:E65535").ClearContents
        With S1.Range(S1.[A1], S1.[A65535].End(xlUp))
            .AutoFilter 1, Target
            .Offset(1, 1).Resize(, 4).SpecialCells(12).Copy Range("B5")
            .AutoFilter
        End With
        With S3
        For i = 5 To .Range("A65535").End(xlUp).Row
            Max = Application.WorksheetFunction.Max(Range("A4:A" & i))
            .Cells(i, 1) = Max + 1
            .Cells(i, 1).HorizontalAlignment = xlCenter
        Next
        End With
    End If
End Sub
 

File đính kèm

  • GPEv.rar
    13.9 KB · Đọc: 82
Em có file này, em viết code rùi nhưng không hiểu sao nó vẫn không tự động đánh số thứ tự được. AC xem và hoàn thiện dùm em nhé!

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Max As Integer
Dim eR As Long, i As Long
If Target.Address = "$F$1" Then
Range("A5:E65535").ClearContents
With S1.Range(S1.[A1], S1.[A65535].End(xlUp))
.AutoFilter 1, Target
.Offset(1, 1).Resize(, 4).SpecialCells(12).Copy Range("B5")
.AutoFilter
End With
With S3
For i = 5 To .Range("A65535").End(xlUp).Row
Max = Application.WorksheetFunction.Max(Range("A4:A" & i))
.Cells(i, 1) = Max + 1
.Cells(i, 1).HorizontalAlignment = xlCenter
Next
End With
End If
End Sub
Mình nghĩ trước khi chạy code bạn đã xóa vùng Ạ:E65535 (trong đó có cột A)
Vậy For i = 5 To .Range("A65535").End(xlUp).Row (nghĩa là i chạy từ 5 đến 4 ) ---> không tự đánh số TT được
(bạn thử sửa For i = 5 To .Range("B65535").End(xlUp).Row xem sao)
Chúc bạn thành công
 
Bạn thử code này xem có được không ?
Mã:
Sub Stt()
    With Range("B5:B" & [b65536].End(3).Row).Offset(, -1)
        .Value = "=IF(RC[1]=0,"""",COUNTA(R5C2:RC[1]))"
        .Value = .Value
    End With
End Sub
 
Web KT

Bài viết mới nhất

Back
Top Bottom