Lỗi xóa công thức chỉ để lại giá trị? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Xin chào các bạn, khi tôi chạy code:
Mã:
Sub Macro1()
    Dim rng As Range
    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)
    With rng
        .Value = "=tinhtoan"
[COLOR=#ff0000]        .Value = .Value[/COLOR]
    End With
End Sub

Nếu không có dòng:
.Value = .Value
thì không sảy ra các lỗi #NA tại ô Z3679.


Nhưng khi tôi thêm:
.Value = .Value


thì xuất hiện lỗi #NA tại ô Z3679


Mong các bạn chỉ giúp nguyên nhân và giải pháp khắc phục.
 

File đính kèm

Xin chào các bạn, khi tôi chạy code:
Mã:
Sub Macro1()
    Dim rng As Range
    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)
    With rng
        .Value = "=tinhtoan"
[COLOR=#ff0000]        .Value = .Value[/COLOR]
    End With
End Sub

Nếu không có dòng:
.Value = .Value
thì không sảy ra các lỗi #NA tại ô Z3679.


Nhưng khi tôi thêm:
.Value = .Value


thì xuất hiện lỗi #NA tại ô Z3679


Mong các bạn chỉ giúp nguyên nhân và giải pháp khắc phục.

- Thú thật là tôi không rành chuyện SpecialCells nên không biết tại sao.
Có thể gán giá trị cả cột Z mà không sử dụng rng thử xem.
PHP:
Sub Macro1()
    Dim rng As Range
    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)
    rng.Value = "=tinhtoan"
    Range("Z1:Z10000").Value = Range("Z1:Z10000").Value
End Sub
- Code này phải bẫy lỗi.
- Bạn chỉ muốn lấy giá trị ngày tháng năm từ cột sang cột Z có điều kiện? Nếu là tôi thì lấy luôn trong code không cần phải qua công thức trong Name.
Gán hàng ngàn công thức xuống sheet thì Excel còn phải tính toán.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, R As Long
sArr = Range("E15", Range("E1000000").End(xlUp)).Resize(, 10).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 10)
For I = 1 To R
    If sArr(I, 1) <> Empty Then
        If IsNumeric(Left(sArr(I, 10), 2)) Then
            dArr(I, 1) = DateSerial(2000 + Left(sArr(I, 10), 2), Mid(sArr(I, 10), 4, 2), Mid(sArr(I, 10), 7, 2))
        Else
            dArr(I, 1) = "-"
        End If
    End If
Next I
Range("Z15").Resize(R) = dArr
End Sub
 
Upvote 0
- Thú thật là tôi không rành chuyện SpecialCells nên không biết tại sao.
Có thể gán giá trị cả cột Z mà không sử dụng rng thử xem.
PHP:
Sub Macro1()    Dim rng As Range    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)    rng.Value = "=tinhtoan"    Range("Z1:Z10000").Value = Range("Z1:Z10000").ValueEnd Sub
- Code này phải bẫy lỗi.
- Bạn chỉ muốn lấy giá trị ngày tháng năm từ cột sang cột Z có điều kiện? Nếu là tôi thì lấy luôn trong code không cần phải qua công thức trong Name.
Gán hàng ngàn công thức xuống sheet thì Excel còn phải tính toán.
PHP:
Public Sub GPE()Dim sArr(), dArr(), I As Long, R As LongsArr = Range("E15", Range("E1000000").End(xlUp)).Resize(, 10).ValueR = UBound(sArr)ReDim dArr(1 To R, 1 To 10)For I = 1 To R    If sArr(I, 1) <> Empty Then        If IsNumeric(Left(sArr(I, 10), 2)) Then            dArr(I, 1) = DateSerial(2000 + Left(sArr(I, 10), 2), Mid(sArr(I, 10), 4, 2), Mid(sArr(I, 10), 7, 2))        Else            dArr(I, 1) = "-"        End If    End IfNext IRange("Z15").Resize(R) = dArrEnd Sub


Cảm ơn Ba Tê nhiều nhiều;
Vâng tôi muốn lấy giá trị ngày tháng năm cho cột Z theo điều kiện như công thức trong name.
Giống như bạn đã gợi ý "gán giá trị cả cột Z",tôi cũng đang sử dụng tạm thời phương pháp sau. Code file thực có bẫy lỗi mĩ mãn rồi ạ --=0
Code này up lên chỉ mang tính chất minh họa thôi ạ.

Mã:
Sub Macro1()
    Dim rng As Range
    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)
    With rng
        .Value = "=tinhtoan"
    End With
    With Columns("Z:Z")
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub


Và rất nhiều công thức ở các cột khác tương tự với cách làm kiểu này.Nếu sử dụng phương pháp code giống như: Public Sub GPE
chắc là em chít mất :((
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Ba Tê nhiều nhiều;
Vâng tôi muốn lấy giá trị ngày tháng năm cho cột Z theo điều kiện như công thức trong name.
Giống như bạn đã gợi ý "gán giá trị cả cột Z",tôi cũng đang sử dụng tạm thời phương pháp sau. Code file thực có bẫy lỗi mĩ mãn rồi ạ --=0
Code này up lên chỉ mang tính chất minh họa thôi ạ.

Mã:
Sub Macro1()
    Dim rng As Range
    Set rng = Range("E15:E" & Range("E555555").End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 21).SpecialCells(xlCellTypeBlanks)
    With rng
        .Value = "=tinhtoan"
    End With
    With Columns("Z:Z")
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub


Và rất nhiều công thức ở các cột khác tương tự với cách làm kiểu này.Nếu sử dụng phương pháp giống như: Public Sub GPE
chắc là em chít mất :((

With Columns("Z:Z")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
4 dòng này tác dụng cũng giống 1 dòng này:
Columns("Z:Z").Value = Columns("Z:Z").Value
Nhưng bạn nên "vừa đủ xài", cả cột 1.048.576 dòng khác với 10.000 dòng. Nếu máy "thông minh" nó sẽ "chưỡi cho".
 
Upvote 0
4 dòng này tác dụng cũng giống 1 dòng này:

Nhưng bạn nên "vừa đủ xài", cả cột 1.048.576 dòng khác với 10.000 dòng. Nếu máy "thông minh" nó sẽ "chưỡi cho".

Cảm ơn Ba Tê,
Có lẽ do tôi thấy dòng .value=.vlue bị lỗi nên mới mặc cảm không nghĩ đến.
Dữ liệu file thực hiện đang 150.000~180.000 dòng và hàng tháng liên tục cập nhật nên mới vậy ạ :-=
 
Upvote 0
Cảm ơn Ba Tê,
Có lẽ do tôi thấy dòng .value=.vlue bị lỗi nên mới mặc cảm không nghĩ đến.
Dữ liệu file thực hiện đang 150.000~180.000 dòng và hàng tháng liên tục cập nhật nên mới vậy ạ :-=

Như vậy thì 200.000 vẫn nhỏ hơn gấp 5 lần 1 cột, nhân với nhiều cột ....!
Híc! Chỉ là thấy sao nói vậy thôi. Dữ liệu đâu ra mà khiếp quá.
 
Upvote 0
Web KT

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

Back
Top Bottom