Sửa lỗi hàm đọc số thành chữ khi là số âm hiện giá trị #VALUE! (2 người xem)

  • Thread starter Thread starter huytuna
  • Ngày gửi Ngày gửi

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

huytuna

Womens From Your City - No Verify - Anonymous Casu
Tham gia
29/7/08
Bài viết
107
Được thích
4
Donate (Paypal)
Donate
Giới tính
Nữ
Nghề nghiệp
Dating
Em sử dụng hàm đọc số thành chữ được lấy từ GPE và thường xuyên sử dụng hàm này. Nhưng nếu là số dương thì không sao, còn số âm thì hiện giá trị #VALUE!. Các AC GPE giúp em sửa lỗi này với! Em xin cám ơn nhiều!

Em gửi file đính kèm
 

File đính kèm

Em sử dụng hàm đọc số thành chữ được lấy từ GPE và thường xuyên sử dụng hàm này. Nhưng nếu là số dương thì không sao, còn số âm thì hiện giá trị #VALUE!. Các AC GPE giúp em sửa lỗi này với! Em xin cám ơn nhiều!

Em gửi file đính kèm

bạn thử dùng hàm VND đổi số sang chữ (mình sưu tầm được) xem?

tải file đính kèm + cho chạy Macro

Mã:
Public Function VND(BaoNhieu)
Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
Dim l, J, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If BaoNhieu = 0 Then
        KetQua = "Khoâng ñoàng"
Else
        If Abs(BaoNhieu) >= 1E+15 Then ' 1E+15 töùc 1.000.000.000.000.000 töùc 1 trieäu tyû
            KetQua = "Soá quaù lôùn"
        Else
            If BaoNhieu < 0 Then
                    KetQua = "Tröø" & Space(1)
            Else
                    KetQua = Space(0)
            End If
            SoTien = Format(Abs(BaoNhieu), "##############0.00") '18 digits with 2 decimal
            SoTien = Right(Space(15) & SoTien, 18)
            Hang = Array("None", "traêm", "möôi", "gì ñoù")
            Doc = Array("None", "ngaøn tyû", "tyû", "trieäu", "ngaøn", "ñoàng", "y")
            Dem = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín")
            For l = 1 To 6
                Nhom = Mid(SoTien, l * 3 - 2, 3)
                If Nhom <> Space(3) Then
                        Select Case Nhom
                                Case "000"
                                    If l = 5 Then
                                            Chu = "ñoàng" & Space(1)
                                    Else
                                            Chu = Space(0)
                                    End If
                                Case ".00"
                                    Chu = "chaün"
                                Case Else
                                    S1 = Left(Nhom, 1)
                                    S2 = Mid(Nhom, 2, 1)
                                    S3 = Right(Nhom, 1)
                                    Chu = Space(0)
                                    Hang(3) = Doc(l)
                                    For J = 1 To 3
                                            Dich = Space(0)
                                            S = Val(Mid(Nhom, J, 1))
                                            If S > 0 Then
                                                    Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
                                            End If
                                            Select Case J
                                                    Case 2 And S = 1
                                                        Dich = "möôøi" & Space(1)
                                                    Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                                        Dich = Hang(J) & Space(1)
                                            Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
                                                        Dich = "l" & Mid(Dich, 2)       ' Kyù töï en lô
                                                    Case 2 And S = 0 And S3 <> "0"
                                                        If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And l = 4) Then
                                                                Dich = "leû" & Space(1)
                                                        End If
                                            End Select
                                            Chu = Chu & Dich
                                    Next J
                        End Select
                        Vitri = InStr(1, Chu, "möôi moät", 1)
                        If Vitri > 0 Then Mid(Chu, Vitri, 9) = "möôi moát"
                        KetQua = KetQua & Chu
                End If
        Next l
    End If
End If
VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function

Link: https://www.mediafire.com/?y0dl1lm0vqgq1o9
 
Lần chỉnh sửa cuối:
bạn thử dùng hàm VND đổi số sang chữ (mình sưu tầm được) xem?

tải file đính kèm + cho chạy Macro

Mã:
Public Function VND(BaoNhieu)
Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
Dim l, J, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If BaoNhieu = 0 Then
        KetQua = "Khoâng ñoàng"
Else
        If Abs(BaoNhieu) >= 1E+15 Then ' 1E+15 töùc 1.000.000.000.000.000 töùc 1 trieäu tyû
            KetQua = "Soá quaù lôùn"
        Else
            If BaoNhieu < 0 Then
                    KetQua = "Tröø" & Space(1)
            Else
                    KetQua = Space(0)
            End If
            SoTien = Format(Abs(BaoNhieu), "##############0.00") '18 digits with 2 decimal
            SoTien = Right(Space(15) & SoTien, 18)
            Hang = Array("None", "traêm", "möôi", "gì ñoù")
            Doc = Array("None", "ngaøn tyû", "tyû", "trieäu", "ngaøn", "ñoàng", "y")
            Dem = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín")
            For l = 1 To 6
                Nhom = Mid(SoTien, l * 3 - 2, 3)
                If Nhom <> Space(3) Then
                        Select Case Nhom
                                Case "000"
                                    If l = 5 Then
                                            Chu = "ñoàng" & Space(1)
                                    Else
                                            Chu = Space(0)
                                    End If
                                Case ".00"
                                    Chu = "chaün"
                                Case Else
                                    S1 = Left(Nhom, 1)
                                    S2 = Mid(Nhom, 2, 1)
                                    S3 = Right(Nhom, 1)
                                    Chu = Space(0)
                                    Hang(3) = Doc(l)
                                    For J = 1 To 3
                                            Dich = Space(0)
                                            S = Val(Mid(Nhom, J, 1))
                                            If S > 0 Then
                                                    Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
                                            End If
                                            Select Case J
                                                    Case 2 And S = 1
                                                        Dich = "möôøi" & Space(1)
                                                    Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                                        Dich = Hang(J) & Space(1)
                                            Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
                                                        Dich = "l" & Mid(Dich, 2)       ' Kyù töï en lô
                                                    Case 2 And S = 0 And S3 <> "0"
                                                        If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And l = 4) Then
                                                                Dich = "leû" & Space(1)
                                                        End If
                                            End Select
                                            Chu = Chu & Dich
                                    Next J
                        End Select
                        Vitri = InStr(1, Chu, "möôi moät", 1)
                        If Vitri > 0 Then Mid(Chu, Vitri, 9) = "möôi moát"
                        KetQua = KetQua & Chu
                End If
        Next l
    End If
End If
VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function

Có cách nào mà không phải dùng Macro không ạ?
 
Bạn chịu khó tìm kiếm trên diễn đàn.
Mình gợi ý cho bạn tìm kiếm chủ để của bạn hoangdanh282vn hoặc bạn hieuxd.

Bạn giúp mình đi - Mình đã tìm các bài viết của bạn hoangdanh282vn nhìn thấy từ trang 1 đến 88 mà nản quá
 
OK, giúp bạn đây. Không hiểu bạn tìm thế nào chứ mình thấy topic này ở ngay trang 1
http://www.giaiphapexcel.com/forum/showthread.php?10557-Đọc-số-bằng-chữ-dùng-Name

Mình đã xem, nhưng thấy phức tạp quá, (....Cái này thì bạn vào Insert\Name\Define.. bạn sẽ thấy một rừng name chứa đựng các công thức, bạn từ từ tìm hiểu nha....) (Mình không được học về excel chỉ học mót công thức trong diễn đàn để phục vụ cho công việc của mình nó thuận tiện chút thôi) mình thích hàm đọc số thành chữ trong file mình gửi hơn, chỉ có điều nó hiện giá trị #VALUE! khi là số âm thôi. Bạn và mọi người sửa lỗi đó trong file mình gửi giúp mình với! Cám ơn các bạn nhiều!
 
Mình đã xem, nhưng thấy phức tạp quá, (....Cái này thì bạn vào Insert\Name\Define.. bạn sẽ thấy một rừng name chứa đựng các công thức, bạn từ từ tìm hiểu nha....) (Mình không được học về excel chỉ học mót công thức trong diễn đàn để phục vụ cho công việc của mình nó thuận tiện chút thôi) mình thích hàm đọc số thành chữ trong file mình gửi hơn, chỉ có điều nó hiện giá trị #VALUE! khi là số âm thôi. Bạn và mọi người sửa lỗi đó trong file mình gửi giúp mình với! Cám ơn các bạn nhiều!
Hình như sửa lại tý tẹo ở [F1] & [B6] là được thôi mà
Thân
 

File đính kèm

Mình đã xem, nhưng thấy phức tạp quá, (....Cái này thì bạn vào Insert\Name\Define.. bạn sẽ thấy một rừng name chứa đựng các công thức, bạn từ từ tìm hiểu nha....) (Mình không được học về excel chỉ học mót công thức trong diễn đàn để phục vụ cho công việc của mình nó thuận tiện chút thôi) mình thích hàm đọc số thành chữ trong file mình gửi hơn, chỉ có điều nó hiện giá trị #VALUE! khi là số âm thôi. Bạn và mọi người sửa lỗi đó trong file mình gửi giúp mình với! Cám ơn các bạn nhiều!
Có đâu nnhiều name lắm đâu mà bạn đã "hãi" vậy. --=0
Làm gì đến 1 rừng name
Bạn chỉ cần đọc kỹ tất cả các bài ở topic đó là biết sử dụng thôi.
Biết sử dụng thành thạo đã là OK.
Ưu điểm của dùng name là bạn có thể gửi file đó cho tất cả mọi người dùng excel 2003 trở lên !!! thì không bị lỗi #VALUE ở máy khác do máy khác không có code hoặc add in.
Bạn có thể tham khảo add in của anh Nguyễn Duy Tuân. Đọc số âm 1 cách ngon lành.
 
mình thích hàm đọc số thành chữ trong file mình gửi hơn, chỉ có điều nó hiện giá trị #VALUE! khi là số âm thôi. Bạn và mọi người sửa lỗi đó trong file mình gửi giúp mình với! Cám ơn các bạn nhiều!

Bạn không nói đùa đấy chứ?

Nhìn vào những công thức kiểu đó thì mắt đã hoa lên, chân tay bủn rủn thì chả có ai không ấm đầu bỏ công rà soát và sửa cho bạn đâu

Mà để dùng đọc số thì bạn phải có cụm G1:S5? Và nếu số có vd. 13 chữ số thì phải biết để nới rộng hơn cụm đó? Vì nếu quên không nới thì bạn thử nhập vào B1: 1234567891234 đi

Người ta cho bạn hàm VND rồi bạn chỉ phải gõ vào B6 công thức =VND(B1) mà bạn còn chê???

Tất nhiên hàm VND tôi chưa biết đúng sai thế nào, chỉ riêng nhìn vào phông chữ đã thấy ớn.
 
Lần chỉnh sửa cuối:
Có đâu nnhiều name lắm đâu mà bạn đã "hãi" vậy. --=0
Làm gì đến 1 rừng name
Bạn chỉ cần đọc kỹ tất cả các bài ở topic đó là biết sử dụng thôi.
Biết sử dụng thành thạo đã là OK.
Ưu điểm của dùng name là bạn có thể gửi file đó cho tất cả mọi người dùng excel 2003 trở lên !!! thì không bị lỗi #VALUE ở máy khác do máy khác không có code hoặc add in.
Bạn có thể tham khảo add in của anh Nguyễn Duy Tuân. Đọc số âm 1 cách ngon lành.

Cám ơn bạn, mình sẽ nghiên cứu dần chủ đề này!
 
Bạn không nói đùa đấy chứ?

Nhìn vào những công thức kiểu đó thì mắt đã hoa lên, chân tay bủn rủn thì chả có ai rà soát và sửa cho bạn đâu

Người ta cho bạn hàm VND rồi bạn chỉ phải gõ vào B6 công thức =VND(B1) mà bạn còn chê???

Tất nhiên hàm VND tôi chưa biết đúng sai thế nào, chỉ riêng nhìn vào phông chữ đã thấy ớn

Nhưng mình vẫn thích nó vì mình chỉ việc copy rồi cố định nó vào Sheet - hơn nữa nó dễ dàng thay đổi khi nó là ngoại tệ (Chỉ cần thay đổi ở S4)
 
Nhưng mình vẫn thích nó vì mình chỉ việc copy rồi cố định nó vào Sheet - hơn nữa nó dễ dàng thay đổi khi nó là ngoại tệ (Chỉ cần thay đổi ở S4)

Bạn thử nhập vào B1: 1234567891234 đi

Ngoài ra nếu trong cùng sheet bạn có chỗ đọc ĐỒNG và chỗ đọc DOLAR thì bạn định sửa S mấy???
 
Lần chỉnh sửa cuối:

File đính kèm

Sửa lại 1 chút thì nó lại đọc đúng thầy ạ!

Tôi không nói là không sửa được. Bạn đọc kỹ bài #12 của tôi.

Còn về cái bạn nói đã sửa.

B1 có 12 345 678 912 345

B6 bạn có: "Mười hai tỷ, ba trăm bốn mươi lăm triệu, sáu trăm bảy mươi tám nghìn, chín trăm mười hai đồng"

Bạn cho thế là đúng?

Đúng phải là: "Mười hai nghìn ba trăm bốn mươi lăm tỷ ..."
 

File đính kèm

Lần chỉnh sửa cuối:
Mình chuyển B2 thành Nguyễn Văn 1 thì không được bạn à? (Mũi tên quay xuống bạn nhé!)
Bạn xem thử File đính kèm!

Bạn xem thử File đính kèm!
Công thức này mình làm dựa theo dữ liệu bạn đưa lên thôi, nếu có thêm nhiều dữ liệu thì công thức không đúng nữa đâu. Bạn đưa dữ liệu thật lên đi tôi làm giúp cho.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Mẫu của mình cũng tương tự như file mình gửi nhưng Sheet2 số lượng người nhiều hơn (cũng như file trên thôi, mình đã bổ xung thêm nhiều dữ liệu hơn), mình gửi lại file bạn làm giúp mình nhé. Cám ơn rất nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn chuot0106 và các bạn giúp mình với!
 
Mẫu của mình cũng tương tự như file mình gửi nhưng Sheet2 số lượng người nhiều hơn (cũng như file trên thôi, mình đã bổ xung thêm nhiều dữ liệu hơn), mình gửi lại file bạn làm giúp mình nhé. Cám ơn rất nhiều!
thử công thức này xem sao
Mã:
=IF($B3=0,0,IF(OR(OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,-1,,)=0,OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,-1,,)=$B$2),OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,,,),0))
 

File đính kèm

thử công thức này xem sao
Mã:
=IF($B3=0,0,IF(OR(OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,-1,,)=0,OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,-1,,)=$B$2),OFFSET(Sheet2!$B$1,MATCH($B$2,Sheet2!$A$2:$A$500,0)+ROW(1:1)-1,,,),0))

Cả buổi chiều hì hục thử công thức của bạn Lê Duy Thương để áp dụng vào biểu mẫu của mình mà không được! Bạn có thể giải thích cụ thể công thức của bạn được không?(Do hạn chế về kiến thức Excel +-+-+-+- Mình không được học hành gì cả, chỉ học lỏm trên các diễn đàn thôi, nhưng cũng thấy khá hữu ích cho công việc)

=IF($B6=1;0;IF(OR(OFFSET(Sheet2!$B$1;MATCH($B$2;Sheet2!$A$2:$A$500;0)+ROW(4:4)-1;-1;;)=0;OFFSET(Sheet2!$B$1;MATCH($B$2;Sheet2!$A$2:$A$500;0)+ROW(4:4)-1;-1;;)=$B$2);OFFSET(Sheet2!$B$1;MATCH($B$2;Sheet2!$A$2:$A$500;0)+ROW(4:4)-1;;;);0))

Mình gửi file thực của mình (file đã cắt bớt dữ liệu) nhờ bạn giúp lại nhé!
 

File đính kèm

Hôm nọ bảo giúp bạn mà mình bận quá! Bạn xem thử, có gì hồi âm lại ngay nhé!

Xin lỗi vì hôm qua mình bận việc không hồi âm ngay cho bạn được - Bạn có công thức nào mà không cần phải thêm các cột ẩn không? Mình gửi lại file thực bạn làm giúp mình nhé! Thân!
 

File đính kèm


Cám ơn bạn chuot0106bạn Lê Duy Thương và bạnphuocam - Cám ơn các bạn nhiều! Mình thấy công thức của bạn phuocam có vẻ đơn giản và dễ hiểu, mình sẽ áp dụng ngay, có gì trục trặc và không hiểu mình sẽ nhắn lại sau. Chúc các bạn một buổi tối thật vui vẻ và đem lại thật nhiều niềm vui cho mọi người! }}}}} }}}}} }}}}} }}}}} }}}}}
 

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

Back
Top Bottom