Code rải giá trị theo vùng

Liên hệ QC

longkhanhck

Thành viên mới
Tham gia
3/10/11
Bài viết
48
Được thích
3
Mình có file excel cần rải giá trị từ dòng tổng đến nhiều dòng khác nhau phía trên (sheet detail), và rãi giá trị đến khi hết dữ liệu trong sheet. Nhưng dữ liệu quá nhiều nếu rãi tay thì thật sự quá lâu nên nhờ Anh chị trên diễn đàng giúp đỡ.
Thông tin cần lấy như file đính kèm.
 

File đính kèm

  • Data.xlsm
    747.7 KB · Đọc: 24
Sử dụng mảng. Đi từ dưới đi lên. Gặp điều kiện thỏa mãn thì sẽ trả kết quả bằng thằng đằng trước.
 
Upvote 0
Bạn chạy code này xem
PHP:
Sub Dien_dulieu()
    Dim i As Long, lr As Long
    Dim sArr(), dArr()
    Dim A
    
    With Sheet1
        lr = .Range("N" & Rows.Count).End(xlUp).Row
        sArr = .Range("E8:N" & lr).Value
        ReDim dArr(1 To UBound(sArr), 1 To 1)
        For i = UBound(sArr) To 1 Step -1
            If IsEmpty(sArr(i, 1)) Then
                If IsEmpty(sArr(i, 10)) Then
                    A = ""
                Else
                    A = sArr(i, 10)
                End If
            End If
            dArr(i, 1) = A
        Next i
        .Range("N8:N" & lr).Value = dArr
    End With
End Sub
 
Upvote 0
Bạn chạy code này xem
PHP:
Sub Dien_dulieu()
    Dim i As Long, lr As Long
    Dim sArr(), dArr()
    Dim A
   
    With Sheet1
        lr = .Range("N" & Rows.Count).End(xlUp).Row
        sArr = .Range("E8:N" & lr).Value
        ReDim dArr(1 To UBound(sArr), 1 To 1)
        For i = UBound(sArr) To 1 Step -1
            If IsEmpty(sArr(i, 1)) Then
                If IsEmpty(sArr(i, 10)) Then
                    A = ""
                Else
                    A = sArr(i, 10)
                End If
            End If
            dArr(i, 1) = A
        Next i
        .Range("N8:N" & lr).Value = dArr
    End With
End Sub
Cảm ơn Bạn đã giúp đỡ, nhưng trong file dữ liệu lại có 1 số vùng giá trị lại nằm ở 1 quy luật khác nữa ví dụ như trong ảnh. Bạn có thể giúp mình code cho cả 2 trường hợp này được không
1665584069118.png
 
Upvote 0
Chạy thử cái này xem sao nhé:
Mã:
Sub Dien_dulieu()
Dim lr&, i&, rng, val
With Sheets("Detail")
    lr = .Cells(Rows.Count, "N").End(xlUp).Row
    rng = .Range("L8:N" & lr).Value
    For i = UBound(rng) To 1 Step -1
        If Not IsEmpty(rng(i, 3)) And IsNumeric(rng(i, 3)) Then
            val = rng(i, 3)
        ElseIf Not IsEmpty(rng(i, 1)) Then rng(i, 3) = val
        End If
    Next
.Range("L8:N" & lr).Value = rng
End With
End Sub
 
Upvote 0
Chạy thử cái này xem sao nhé:
Mã:
Sub Dien_dulieu()
Dim lr&, i&, rng, val
With Sheets("Detail")
    lr = .Cells(Rows.Count, "N").End(xlUp).Row
    rng = .Range("L8:N" & lr).Value
    For i = UBound(rng) To 1 Step -1
        If Not IsEmpty(rng(i, 3)) And IsNumeric(rng(i, 3)) Then
            val = rng(i, 3)
        ElseIf Not IsEmpty(rng(i, 1)) Then rng(i, 3) = val
        End If
    Next
.Range("L8:N" & lr).Value = rng
End With
End Sub
Thank Anh, code chạy ổn Anh
 
Upvote 0
Dữ liệu nguồn không chuẩn. Cứ cố gắng code để làm gì anh.
Chắc mình cũng thay đổi quan điểm hỗ trợ code thôi. Dữ liệu nguồn không chuẩn thì phải nêu đầy đủ các điều kiện để code 1 lần luôn, chứ không thì sẽ code đi code lại mất thời gian.
 
Upvote 0
Chắc mình cũng thay đổi quan điểm hỗ trợ code thôi. Dữ liệu nguồn không chuẩn thì phải nêu đầy đủ các điều kiện để code 1 lần luôn, chứ không thì sẽ code đi code lại mất thời gian.
Chắc là nên thế. Chứ người nhờ người ta cũng đâu có quan trọng file của họ đâu.
Nếu họ quan trọng. Thì việc cơ cấu , tổ chức dữ liệu là điều tối thiểu họ sẽ làm
 
Upvote 0
Chắc là nên thế. Chứ người nhờ người ta cũng đâu có quan trọng file của họ đâu.
Nếu họ quan trọng. Thì việc cơ cấu , tổ chức dữ liệu là điều tối thiểu họ sẽ làm
Dữ liệu được cấp từ bên thứ 3, mình phải tự kiểm tra đúng hoặc sai rồi báo lại họ. Code hỗ trợ mình rất nhanh cho những dữ liệu chuẩn còn những dòng không chuẩn mình check lại thủ công_(Không còn cách nào khác) vì dữ liệu thô không phải mình làm ra.
 
Upvote 0
Web KT

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

Back
Top Bottom