Xin hỗ trợ Code cắt dữ liệu chuyển từ Cell đến Cell trong cùng Sheet

Liên hệ QC

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,292
Được thích
796
Mọi chi tiết xin ghi rõ trong File đính kèm - Kính mong nhận được sự giúp đỡ của công đồng GPE
Xin chân thành cảm ơn các bạn
 

File đính kèm

  • AAAAA_______.xlsm
    45.4 KB · Đọc: 6
Cho mình hỏi ceel nó là cái gì thế, có phải ý bác là cell không?
 
Upvote 0
Bác xem có phải như thế này không.
 

File đính kèm

  • AAAAA_______.xlsm
    48.2 KB · Đọc: 6
Upvote 0
Code trong module worksheet nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SL As Double, Arr(), I As Long, Lr As Long
Dim rngMa As Range, rngSL As Range
Set rngMa = Range("D4")
Set rngSL = Range("G7")
If Target.Address = rngMa.Address Or Target.Address = rngSL.Address Then
    If rngMa <> "" And rngSL <> "" Then
        SL = rngSL.Value - Fix(rngSL.Value)
        Lr = Cells(Rows.Count, "AA").End(xlUp).Row
        If Lr < 4 Then Exit Sub
        Arr = Range("AA4:AB" & Lr).Value
        For I = 1 To UBound(Arr)
            If UCase(Arr(I, 1)) = UCase(rngMa.Value) Then
                Arr(I, 2) = SL
                Exit For
            End If
        Next
        Range("AA4:AB" & Lr) = Arr
    End If
End If
End Sub
Bác xem có phải như thế này không.
Bạn đã tính tới các mã trước đó đã có dữ liệu sẵn hay chưa?
 
Upvote 0
Bác xem có phải như thế này không.
Chưa được bạn ơi ! Khi mình thay đổi dữ liệu ở D4 và G7 đi thì Code không chạy nữa
Mình nói rõ hơn là : Tại D4 dữ liệu sẽ thay đổi bằng cách chọn theo Lis hoặc nhập từ bàn phím từ KH1 ... KH12
Tại G7 : Là dữ liệu số thay đổi liên tục (Không cố định) được nhập từ bàn phím
Người nhập liệu có thể nhập dữ liệu từ D4 trước hoặc ngược lại có thể nhập từ G7 trước
Bạn xem tes lại giúp
 
Upvote 0
Chưa được bạn ơi ! Khi mình thay đổi dữ liệu ở D4 và G7 đi thì Code không chạy nữa
Mình nói rõ hơn là : Tại D4 dữ liệu sẽ thay đổi bằng cách chọn theo Lis hoặc nhập từ bàn phím từ KH1 ... KH12
Tại G7 : Là dữ liệu số thay đổi liên tục (Không cố định) được nhập từ bàn phím
Người nhập liệu có thể nhập dữ liệu từ D4 trước hoặc ngược lại có thể nhập từ G7 trước
Bạn xem tes lại giúp
Bác bật macro lên chưa vậy, làm gì có chuyện code không chạy. :( Mình có thử lại rồi mà vẫn OK
 
Upvote 0
Code trong module worksheet nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SL As Double, Arr(), I As Long, Lr As Long
Dim rngMa As Range, rngSL As Range
Set rngMa = Range("D4")
Set rngSL = Range("G7")
If Target.Address = rngMa.Address Or Target.Address = rngSL.Address Then
    If rngMa <> "" And rngSL <> "" Then
        SL = rngSL.Value - Fix(rngSL.Value)
        Lr = Cells(Rows.Count, "AA").End(xlUp).Row
        If Lr < 4 Then Exit Sub
        Arr = Range("AA4:AB" & Lr).Value
        For I = 1 To UBound(Arr)
            If UCase(Arr(I, 1)) = UCase(rngMa.Value) Then
                Arr(I, 2) = SL
                Exit For
            End If
        Next
        Range("AA4:AB" & Lr) = Arr
    End If
End If
End Sub

Bạn đã tính tới không có mã trùng nào hoặc là các mã trước đó đã có dữ liệu sẵn hay chưa?
Cảm ơn bạn mình sẽ tes thử. Đúng như bạn nói : 2 tình huống đó
1) Mã trùng: Xin thưa với bạn là không có mã trùng
2) Trường hợp mã đó đang nhận dữ liệu nhưng do nhập liệu sai cần sửa lại số liệu minh chưa nêu
Kính mong bạn xử lý cho
 
Upvote 0
Code trong module worksheet nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SL As Double, Arr(), I As Long, Lr As Long
Dim rngMa As Range, rngSL As Range
Set rngMa = Range("D4")
Set rngSL = Range("G7")
If Target.Address = rngMa.Address Or Target.Address = rngSL.Address Then
    If rngMa <> "" And rngSL <> "" Then
        SL = rngSL.Value - Fix(rngSL.Value)
        Lr = Cells(Rows.Count, "AA").End(xlUp).Row
        If Lr < 4 Then Exit Sub
        Arr = Range("AA4:AB" & Lr).Value
        For I = 1 To UBound(Arr)
            If UCase(Arr(I, 1)) = UCase(rngMa.Value) Then
                Arr(I, 2) = SL
                Exit For
            End If
        Next
        Range("AA4:AB" & Lr) = Arr
    End If
End If
End Sub

Bạn đã tính tới các mã trước đó đã có dữ liệu sẵn hay chưa?
Mình chỉ làm theo yêu cầu của thớt
1. Phải có mã 1 -> 12
2. Theo nội dung thì thớt không nói gì tới lưu dữ liệu mà mình đang hiểu là dữ liệu là mới nhất.

:rolleyes:
 
Upvote 0
2. Theo nội dung thì thớt không nói gì tới lưu dữ liệu mà mình đang hiểu là dữ liệu là mới nhất.
Cái này thì tùy thớt thôi, nhưng 1 bảng mà chỉ nhập 1 giá trị duy nhất thì nó quá vô lý. Nhập xong cái này, thay mã khác nhập số khác có vẻ hợp lý hơn.
Mà theo mình thấy thì vẫn nên tạo button "Nhập Liệu" thì hay hơn, khi nào thấy dữ liệu đúng mới ấn nhập chứ nếu vừa nhập mã cũ xong, ấn droplist để đổi mã mới (mã thứ 2) nó cũng chạy số lượng mã cũ (mã 1). Rồi nhỡ may mã 2 bấm lộn, chọn sang mã 3 thì cái mã 2 vừa bấm lộn đó vô tình cũng có số liệu không mong muốn
 
Upvote 0
Code trong module worksheet nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SL As Double, Arr(), I As Long, Lr As Long
Dim rngMa As Range, rngSL As Range
Set rngMa = Range("D4")
Set rngSL = Range("G7")
If Target.Address = rngMa.Address Or Target.Address = rngSL.Address Then
    If rngMa <> "" And rngSL <> "" Then
        SL = rngSL.Value - Fix(rngSL.Value)
        Lr = Cells(Rows.Count, "AA").End(xlUp).Row
        If Lr < 4 Then Exit Sub
        Arr = Range("AA4:AB" & Lr).Value
        For I = 1 To UBound(Arr)
            If UCase(Arr(I, 1)) = UCase(rngMa.Value) Then
                Arr(I, 2) = SL
                Exit For
            End If
        Next
        Range("AA4:AB" & Lr) = Arr
    End If
End If
End Sub

Bạn đã tính tới các mã trước đó đã có dữ liệu sẵn hay chưa?
Cảm ơn bạn nhiều nhiều. Mình đã tes thử đúng như cái mình cần rồi
Có lẽ chỉ còn có tình huống nào chưa lường tới nữa thôi - Cảm ơn bạn
Bài đã được tự động gộp:

Cái này thì tùy thớt thôi, nhưng 1 bảng mà chỉ nhập 1 giá trị duy nhất thì nó quá vô lý. Nhập xong cái này, thay mã khác nhập số khác có vẻ hợp lý hơn.
Mà theo mình thấy thì vẫn nên tạo button "Nhập Liệu" thì hay hơn, khi nào thấy dữ liệu đúng mới ấn nhập chứ nếu vừa nhập mã cũ xong, ấn droplist để đổi mã mới (mã thứ 2) nó cũng chạy số lượng mã cũ (mã 1). Rồi nhỡ may mã 2 bấm lộn, chọn sang mã 3 thì cái mã 2 vừa bấm lộn đó vô tình cũng có số liệu không mong muốn
Tôi rất phục bạn ở cách bắt bài tình huống của người dùng (Không chỉ riêng bài này của tôi). Tôi thấy rất nhiều bài của bạn đoán ý, bắt bài rất tốt - Xin cảm ơn, cảm ơn nhiều
 
Upvote 0
Code trong module worksheet nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SL As Double, Arr(), I As Long, Lr As Long
Dim rngMa As Range, rngSL As Range
Set rngMa = Range("D4")
Set rngSL = Range("G7")
If Target.Address = rngMa.Address Or Target.Address = rngSL.Address Then
    If rngMa <> "" And rngSL <> "" Then
        SL = rngSL.Value - Fix(rngSL.Value)
        Lr = Cells(Rows.Count, "AA").End(xlUp).Row
        If Lr < 4 Then Exit Sub
        Arr = Range("AA4:AB" & Lr).Value
        For I = 1 To UBound(Arr)
            If UCase(Arr(I, 1)) = UCase(rngMa.Value) Then
                Arr(I, 2) = SL
                Exit For
            End If
        Next
        Range("AA4:AB" & Lr) = Arr
    End If
End If
End Sub

Bạn đã tính tới các mã trước đó đã có dữ liệu sẵn hay chưa?
Bạn xem xử lý dùm mình tý chỗ này nữa :
Bạn cho khống chế số liệu sau dấu phảy chỉ lấy đúng 3 chữ số giúp mình với - Không biết có phải do hiên tại nó đang ngầm định quá dài ( 0,0230000000447035 ) hay do việc sắp xếp thứ tự mã điều kiện KH trong File gốc không theo thứ tự nên khi sáp vào tính toán trong File gốc của mình thì nó báo lỗi dòng Range("AA4:AB" & Lr) = Arr
Mong bạn quan tâm giúp - Xin cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem xử lý dùm mình tý chỗ này nữa :
Bạn cho khống chế số liệu sau dấu phảy chỉ lấy đúng 3 chữ số giúp mình với - Không biết có phải do hiên tại nó đang ngầm định quá dài ( 0,0230000000447035 ) hay do việc sắp xếp thứ tự mã điều kiện KH trong File gốc không theo thứ tự nên khi sáp vào tính toán trong File gốc của mình thì nó báo lỗi dòng Range("AA4:AB" & Lr) = Arr
Mong bạn quan tâm giúp - Xin cảm ơn
Bài này thế nào rồi bạn, trong file bạn gửi mình có thử số trên nhưng nó không báo lỗi gì
 
Upvote 0
Bài này thế nào rồi bạn, trong file bạn gửi mình có thử số trên nhưng nó không báo lỗi gì
Bạn giúp cho khống chế số liệu sau dấu phảy chỉ lấy đúng 3 chữ số giúp mình với - Hiên tại nó đang ngầm định quá dài ( 0,0230000000447035 ) làm ảnh hưởng tới việc tính toán trước đó trong File - Cảm ơn sự nhiệt thành của bạn - Xin cảm ơn
 
Upvote 0
Arr(I, 2) = SL

-->

Arr(I, 2) = worksheetfunction.round(SL, 3)
 
Upvote 0
Web KT

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

Back
Top Bottom