Giúp em viết lại nút lệnh cập nhật trong file đính kèm

Liên hệ QC

hoctapphotoshop

Thành viên mới
Tham gia
4/4/18
Bài viết
29
Được thích
3
Giới tính
Nam
- ý tưởng em khi thay đổi nội dung cột C danh sách họ tên thì cột B chủ hộ cũng thay đổi theo.
- khi kéo để copy dữ liệu ở cột C danh sách họ tên xong thì ấn cập nhật dữ liệu. sẽ cập nhật lại dữ liệu.
- tuy nhiên nút lệnh cập nhật dữ liệu em viết khi dữ liệu nhiều hàng thì lệnh chạy chậm.
em muốn anh chị giúp có lệnh nào tối ưu hơn để thay thế thì giúp em chỉnh sửa với. em cám ơn
 

File đính kèm

  • ho, ten.xlsm
    26.2 KB · Đọc: 23
- ý tưởng em khi thay đổi nội dung cột C danh sách họ tên thì cột B chủ hộ cũng thay đổi theo.
- khi kéo để copy dữ liệu ở cột C danh sách họ tên xong thì ấn cập nhật dữ liệu. sẽ cập nhật lại dữ liệu.
- tuy nhiên nút lệnh cập nhật dữ liệu em viết khi dữ liệu nhiều hàng thì lệnh chạy chậm.
em muốn anh chị giúp có lệnh nào tối ưu hơn để thay thế thì giúp em chỉnh sửa với. em cám ơn
 

File đính kèm

  • NVThanh.txt
    1.1 KB · Đọc: 22
Upvote 0
- ý tưởng em khi thay đổi nội dung cột C danh sách họ tên thì cột B chủ hộ cũng thay đổi theo.
- khi kéo để copy dữ liệu ở cột C danh sách họ tên xong thì ấn cập nhật dữ liệu. sẽ cập nhật lại dữ liệu.
- tuy nhiên nút lệnh cập nhật dữ liệu em viết khi dữ liệu nhiều hàng thì lệnh chạy chậm.
em muốn anh chị giúp có lệnh nào tối ưu hơn để thay thế thì giúp em chỉnh sửa với. em cám ơn
Thử đoạn code dưới đây
Mã:
Sub CapNhat_()
Dim ChuHo
Dim i, j
With Sheets("Nhap")
    ChuHo = .Range("c3", .Range("c3").End(xlDown))
    For i = 1 To UBound(ChuHo)
        j = Len(ChuHo(i, 1))
        If IsNumeric(Mid(ChuHo(i, 1), j - 3, 2)) = True Then
            ChuHo(i, 1) = Left(ChuHo(i, 1), j - 6)
        End If
    Next i
    .Range("b3").Resize(UBound(ChuHo), 1) = ChuHo
End With
End Sub
 
Upvote 0
viết lại lệnh cho nút cập nhật sao cho hiệu quả hơn. còn lệnh cắt họ tên ở trên theo sự kiện thay đổi của cột danh sách họ tên thì ok rồi ạ
Bài đã được tự động gộp:

Thử đoạn code dưới đây
Mã:
Sub CapNhat_()
Dim ChuHo
Dim i, j
With Sheets("Nhap")
    ChuHo = .Range("c3", .Range("c3").End(xlDown))
    For i = 1 To UBound(ChuHo)
        j = Len(ChuHo(i, 1))
        If IsNumeric(Mid(ChuHo(i, 1), j - 3, 2)) = True Then
            ChuHo(i, 1) = Left(ChuHo(i, 1), j - 6)
        End If
    Next i
    .Range("b3").Resize(UBound(ChuHo), 1) = ChuHo
End With
End Sub
lệnh cập nhật này chỉ áp dụng được cho trường hợp cắt chữ như công thức. nếu muốn cập nhật cho trường hợp khác lại không được. ý em muốn có lệnh nào mà dữ liệu cột họ tên thay đổi, thì cập nhật các hàm của cột khác hoặc công thức cột khác cập nhật theo.
 
Lần chỉnh sửa cuối:
Upvote 0
lệnh cập nhật này chỉ áp dụng được cho trường hợp cắt chữ như công thức. nếu muốn cập nhật cho trường hợp khác lại không được. ý em muốn có lệnh nào mà dữ liệu cột họ tên thay đổi, thì cập nhật các hàm của cột khác hoặc công thức cột khác cập nhật theo.
Đừng viết suông như NQ TW như thế; Cần cụ thể là bạn muốn những ô nào cần những giá trị gì xuất hiện khi bạn cập nhật vô ô hay vùng (nào?)

Mai03.jpg
 
Upvote 0
Đừng viết suông như NQ TW như thế; Cần cụ thể là bạn muốn những ô nào cần những giá trị gì xuất hiện khi bạn cập nhật vô ô hay vùng (nào?)

View attachment 211911
em khó diễn tả. ở trong file thể hiện rồi ạ.
- lệnh cắt họ tên người đầu tiên ở cột C (Danh sách họ tên) sang cột B (chủ hộ) thì em đã làm được ok rồi.
- còn trường hợp kéo copy dữ liệu ở ô bên cột C (danh sách họ tên) thì cột B (chủ hộ) sẽ không thực hiện. Nên em tạo nút cập nhật để thực hiện.
- Nút cập nhật em viết tương đương với sự kiện kích chuột vào từng ô cột C(danh sách họ tên) để làm mới lại dữ liệu. khi nhiều hàng thì lệnh cập nhật này sẽ chậm. Vì vậy em muốn giúp viết lại lệnh cho nút cập nhật này sao cho nhanh hơn. vì em k biết có lệnh làm mới dữ liệu, hay update dữ liệu cho cột hay sheet......gì không.
 
Upvote 0
- lệnh cắt họ tên người đầu tiên ở cột C (Danh sách họ tên) sang cột B (chủ hộ) thì em đã làm được ok rồi.
Người đầu tiên ở cột [C] đang có tên là: nguyễn văn ba f1984
Họ tên người dù là giả lập cũng phải được viết hoa. Sao bạn lại có thể tùy thích trong cách viết như vậy?
Bạn nói đã cắt sang cột B , nhưng mình không thấy điều đó;
Thêm nữa, làm sao biết nguyễn văn ba f1984 là chủ hộ? còn các tên khác không là chủ hộ.
Khi giả lập chí ít phải có 2 chủ hộ. & 6 hay 7 người không là chủ hộ


Riêng câu đầu đã có quá nhiều chuyện để nói như thế rồi, sao có thể coi tiếp các câu còn lại!?!

Tạm biệt!
 
Upvote 0
Người đầu tiên ở cột [C] đang có tên là: nguyễn văn ba f1984
Họ tên người dù là giả lập cũng phải được viết hoa. Sao bạn lại có thể tùy thích trong cách viết như vậy?
Bạn nói đã cắt sang cột B , nhưng mình không thấy điều đó;
Thêm nữa, làm sao biết nguyễn văn ba f1984 là chủ hộ? còn các tên khác không là chủ hộ.
Khi giả lập chí ít phải có 2 chủ hộ. & 6 hay 7 người không là chủ hộ


Riêng câu đầu đã có quá nhiều chuyện để nói như thế rồi, sao có thể coi tiếp các câu còn lại!?!

Tạm biệt!

- Đó là file quy định để nhập một gia đình thì đương nhiên quy định người đầu tiên là chủ hộ. Còn tên được cắt hay tên trong cột B để nhập không cần viết hoa để giảm bớt hàm và bớt công người đánh. dù sao kết quả cuối cùng sẽ đổi thành chữ hán.
- ở đây để viết sớ nên không cần 2 chủ hộ. mà chỉ có 1 chủ hộ duy nhất đứng đầu gia đình.
dù sao cũng cám ơn anh đã góp ý.
 
Lần chỉnh sửa cuối:
Upvote 0
híc Troll ác quá.
- Đó là file quy định để nhập một gia đình thì đương nhiên quy định người đầu tiên là chủ hộ. Còn tên được cắt hay tên trong cột B để nhập không cần viết hoa để giảm bớt hàm và bớt công người đánh. dù sao kết quả cuối cùng sẽ đổi thành chữ hán.
- ở đây để viết sớ nên không cần 2 chủ hộ. mà chỉ có 1 chủ hộ duy nhất đứng đầu gia đình.
dù sao cũng cám ơn anh đã góp ý. hehe
Troll gì vậy,
Liên quan tâm linh mà tên cũng bị khờ-inh (không thèm viết hoa) hay là Hán tự thì quan trọng hơn
Liên quan sớ nữa, tôi không tiếp tay cho những việc thế này
 
Lần chỉnh sửa cuối:
Upvote 0
Troll gì vậy,
Liên quan tâm linh mà tên cũng bị ***** (không thèm viết hoa) hay là Hán tự thì quan trọng hơn
Liên quan sớ nữa, tôi không tiếp tay cho những việc thế này
đó là đầu vào còn đầu ra đâu có hiện tên đâu. phần mềm đánh chữ hán họ cũng đánh chữ thường mà. kết quả ra chữ hán thì sao không tâm linh
 
Upvote 0
Upvote 0
- Đó là file (1) quy định để nhập một gia đình thì đương nhiên (1.1) quy định người đầu tiên là chủ hộ. Còn tên được cắt hay tên trong cột B để nhập (2) không cần viết hoa để giảm bớt hàm và bớt công người đánh. dù sao kết quả cuối cùng sẽ đổi thành chữ hán.
- ở đây để viết sớ nên không cần 2 chủ hộ. (3) mà chỉ có 1 chủ hộ duy nhất đứng đầu gia đình.
dù sao cũng cám ơn anh đã góp ý.
(1) Ai qui định vậy bạn?
(1.1) Viêt nam hay TQ có qui định vậy à, văn bản nào?
(2) Đài Loan thì theo dân TQ là không được viết hoa, Còn dân ta muốn sao cũng không ai bắt lỗi về chính trị.
(3) Mình đề nghị file giả lập có 2 hộ với 2 chủ hộ là chí ít, để khi chép sang không trở thành vợ ông này chung đụng với chồng bà kia

Tốt nhất mình cũng không nên nhận lời cảm ơn của bạn; Trả lại cho bạn đó!
 
Upvote 0
(1) Ai qui định vậy bạn?
(1.1) Viêt nam hay TQ có qui định vậy à, văn bản nào?
(2) Đài Loan thì theo dân TQ là không được viết hoa, Còn dân ta muốn sao cũng không ai bắt lỗi về chính trị.
(3) Mình đề nghị file giả lập có 2 hộ với 2 chủ hộ là chí ít, để khi chép sang không trở thành vợ ông này chung đụng với chồng bà kia

Tốt nhất mình cũng không nên nhận lời cảm ơn của bạn; Trả lại cho bạn đó!
vâng.
 
Upvote 0
- ý tưởng em khi thay đổi nội dung cột C danh sách họ tên thì cột B chủ hộ cũng thay đổi theo.
- khi kéo để copy dữ liệu ở cột C danh sách họ tên xong thì ấn cập nhật dữ liệu. sẽ cập nhật lại dữ liệu.
- tuy nhiên nút lệnh cập nhật dữ liệu em viết khi dữ liệu nhiều hàng thì lệnh chạy chậm.
em muốn anh chị giúp có lệnh nào tối ưu hơn để thay thế thì giúp em chỉnh sửa với. em cám ơn
Bỏ sub capnhat
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim iStr As String
  If Target.Column = 3 And Target.Row > 2 Then
    Application.ScreenUpdating = False
      If Target.Count = 1 Then
        iStr = Target.Value
        If Len(iStr) > 6 Then
          Target.Offset(0, -1) = Left(iStr, Len(iStr) - Application.WorksheetFunction.Max(InStrRev(StrReverse(iStr), "91f ", -1), InStrRev(StrReverse(iStr), "91n ", -1), InStrRev(StrReverse(iStr), "02f ", -1), InStrRev(StrReverse(iStr), "02n ", -1)) - 3)
        Else
          Target.Offset(0, -1) = iStr
        End If
      Else
        Dim sArr(), i As Long
        sArr = Target.Value
        For i = 1 To UBound(sArr)
          iStr = sArr(i, 1)
          If Len(iStr) > 6 Then
            Target.Offset(0, -1) = Left(iStr, Len(iStr) - Application.WorksheetFunction.Max(InStrRev(StrReverse(iStr), "91f ", -1), InStrRev(StrReverse(iStr), "91n ", -1), InStrRev(StrReverse(iStr), "02f ", -1), InStrRev(StrReverse(iStr), "02n ", -1)) - 3)
          Else
            Target.Offset(0, -1) = iStr
          End If
        Next i
      End If
    Application.ScreenUpdating = True
  End If
End Sub
Công thức cắt họ tên thấy kỳ kỳ o_O
 
Upvote 0
Bỏ sub capnhat
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim iStr As String
  If Target.Column = 3 And Target.Row > 2 Then
    Application.ScreenUpdating = False
      If Target.Count = 1 Then
        iStr = Target.Value
        If Len(iStr) > 6 Then
          Target.Offset(0, -1) = Left(iStr, Len(iStr) - Application.WorksheetFunction.Max(InStrRev(StrReverse(iStr), "91f ", -1), InStrRev(StrReverse(iStr), "91n ", -1), InStrRev(StrReverse(iStr), "02f ", -1), InStrRev(StrReverse(iStr), "02n ", -1)) - 3)
        Else
          Target.Offset(0, -1) = iStr
        End If
      Else
        Dim sArr(), i As Long
        sArr = Target.Value
        For i = 1 To UBound(sArr)
          iStr = sArr(i, 1)
          If Len(iStr) > 6 Then
            Target.Offset(0, -1) = Left(iStr, Len(iStr) - Application.WorksheetFunction.Max(InStrRev(StrReverse(iStr), "91f ", -1), InStrRev(StrReverse(iStr), "91n ", -1), InStrRev(StrReverse(iStr), "02f ", -1), InStrRev(StrReverse(iStr), "02n ", -1)) - 3)
          Else
            Target.Offset(0, -1) = iStr
          End If
        Next i
      End If
    Application.ScreenUpdating = True
  End If
End Sub
Công thức cắt họ tên thấy kỳ kỳ o_O
em cám ơn đã giúp. trả là em viết giúp cho nhà chùa để chèn sớ tự động. mà nhà chùa lại không dùng máy tính nhiều nên nhập dữ liệu nhiều ô phức tạp, chỉ nhập tất vào một ô. Cái này về nguyên tắc dữ liệu thì rất kỳ nhưng lại giúp đỡ phức tạp với người biết ít ạ. Tết sắp đến chúc anh và gia đình vui vẻ.
 
Upvote 0
trả là em viết giúp cho nhà chùa chèn sớ tự động. mà nhà chùa lại không nhập dữ liệu nhiều ô phức tạp, chỉ nhập tất vào một ô. .
Không thể chìu kiểu cà chớn này được, hết biết!
 

File đính kèm

  • Mai03.jpg
    Mai03.jpg
    127.2 KB · Đọc: 4
Upvote 0
Web KT
Back
Top Bottom