Xin gỡ rối chuyển giá trị về dạng value

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

huevantran

Thành viên chính thức
Tham gia
27/4/22
Bài viết
55
Được thích
42
Em chào các anh chị thành viên GPE,
Ví dụ em có giá trị ở cột G như bên dưới, khi em chạy code ABC_1 thì giá trị trả về sẽ đúng dạng value như mong muốn nhưng kết quả lại bị làm tròn:
20,317.50: Link opens in a new window -> Kết quả: 20.317,00

Mã:
Sub ABC_1()
    Dim lastRow As Long
    Dim i As Long
    Dim cellValue As String
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Check")
    lastRow = Cells(ws.Rows.Count, "G").End(xlUp).Row
    For i = 2 To lastRow
        cellValue = ws.Range("G" & i).Value
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ":  Link opens in a new window", "")
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ",", "")
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ".", ",")
        Range("G" & i).Value = Val(cellValue)
    Next i
End Sub

Còn khi em chạy code ABC_2 thì giá trị sẽ được như mong muốn, tuy nhiên kết quả lại không ở dạng Value:
20,317.50: Link opens in a new window -> Kết quả: '20.317,50
Mã:
Sub ABC_2()
    Dim lastRow As Long
    Dim i As Long
    Dim cellValue As String
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Check")
    lastRow = Cells(ws.Rows.Count, "G").End(xlUp).Row
    For i = 2 To lastRow
        cellValue = ws.Range("G" & i).Value
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ":  Link opens in a new window", "")
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ",", "")
        cellValue = Application.WorksheetFunction.Substitute(cellValue, ".", ",")
        Range("G" & i).Value = cellValue
    Next i
End Sub

Nhờ các anh chị xem giúp em có cách nào chuyển giá trị về dạng value mà không bị làm tròn số với ạ.
Em cảm ơn. !

1680162832801.png
 

File đính kèm

  • GPE_TEST.xlsm
    19 KB · Đọc: 3
bỏ dòng này đi ở ABC_1
cellValue = Application.WorksheetFunction.Substitute(cellValue, ".", ",")
 
Upvote 0
VBA có hàm Replace mà.

Bài này dùng Ctrl + H cho nhanh, gọn. VBA thì record macro lại là có code siêu tốc xa lộ luôn.
 
Upvote 0
bỏ dòng này đi ở ABC_1
cellValue = Application.WorksheetFunction.Substitute(cellValue, ".", ",")
Đúng là bỏ dòng này giá trị trả về kết quả đúng và đúng dạng value luôn. Anh có thể giải thích giúp em được không. :)
VBA có hàm Replace mà.

Bài này dùng Ctrl + H cho nhanh, gọn. VBA thì record macro lại là có code siêu tốc xa lộ luôn.
Trước em đã thử dùng hàm Replace, kết quả cũng tương tự như ở hàm Substitute. Em có viết công thức như bên dưới thì nhận được kết quả chính xác, nên em thử mò VBA code theo hướng này.
=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(G2;": Link opens in a new window";"");",";"");".";","))
 
Upvote 0
Đúng là bỏ dòng này giá trị trả về kết quả đúng và đúng dạng value luôn. Anh có thể giải thích giúp em được không. :)

Trước em đã thử dùng hàm Replace, kết quả cũng tương tự như ở hàm Substitute. Em có viết công thức như bên dưới thì nhận được kết quả chính xác, nên em thử mò VBA code theo hướng này.
=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(G2;": Link opens in a new window";"");",";"");".";","))
Vì dữ liệu số với VBA thì là phân cách phần thập phân là dấu . (dấu phẩy là đang thể hiện ngoài excel sheet)

đã thế thì nên dùng hàm Replace (con đẻ hơn là con riêng hay ...)
 
Upvote 0
Vì dữ liệu số với VBA thì là phân cách phần thập phân là dấu . (dấu phẩy là đang thể hiện ngoài excel sheet)

đã thế thì nên dùng hàm Replace (con đẻ hơn là con riêng hay ...)
Vâng, em đã hiểu và giải được vấn đề của mình, cảm ơn các anh đã hỗ trợ.

Mã:
For i = 2 To lastRow
        cellValue = ws.Range("G" & i).Value
        cellValue = Replace(cellValue, ":  Link opens in a new window", "")
        cellValue = Replace(cellValue, ",", "")
        Range("G" & i).Value = cellValue
    Next i
 
Upvote 0
Web KT

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

Back
Top Bottom