Kiểm tra Mã số thuế hợp lệ bằng Excel

Liên hệ QC

gnurtel

Thành viên mới
Tham gia
19/12/06
Bài viết
14
Được thích
11
Chào các bác,
Theo tôi được biết mã số được tạo theo một quy luật nhất định, với 10 con số đầu người ta có thể kiểm tra được MST bạn gõ vào có đúng hay không.
Bác nào có thể tạo ra 1 file hoặc 1 hàm để kiểm tra tính hợp lệ của mã số thuế được không? xin cảm ơn !
 
gnurtel đã viết:
Chào các bác,
Theo tôi được biết mã số được tạo theo một quy luật nhất định, với 10 con số đầu người ta có thể kiểm tra được MST bạn gõ vào có đúng hay không.
Bác nào có thể tạo ra 1 file hoặc 1 hàm để kiểm tra tính hợp lệ của mã số thuế được không? xin cảm ơn !
Hình như trong trang web của Tổng cục Thuế có nói về vấn đề này đấy. Bạn thử tham khảo xem.


Thân!
 
Gọi số thứ 1 là S1, 9 là S9
MOD(10-(S1*31+S2*29+S3*23+S4*19+S5*17+S6*13+S7*7+S8*5+S9*3),11)
Bạn check lại có OK không. Còn đây là addins tôi lấy trên GPE.
Function tccheck(mst) As Boolean
If Len(mst & "") > 11 Then
MsgBox "Tax code checked must have as most 10 digits"
Exit Function
End If
If IsNumeric(mst) Then
msttext = Format(mst, "0000000000")
Else
msttext = mst
End If

skt = CDbl(Mid(msttext, 1, 1)) * 31
skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
skt = skt + CDbl(Mid(msttext, 9, 1)) * 3

tccheck = (CDbl(Mid(msttext, 10)) = 10 - skt Mod 11)
End Function
 
Mình xin giải thích rõ hơn một chút, quy luật của một mã số thuế bất kỳ là:
Gọi số thứ 1 là S1, 9 là S9; số thứ 10 là S10
Nếu giá trị của MOD(10-(S1*31+S2*29+S3*23+S4*19+S5*17+S6*13+S7*7+S8*5+S9* 3),11) bằng đúng S10 thì mã số thuế đấy là đúng đấy các bạn ạ.

Và vì mã số thuế có thể có lúc là "0101567589-001" nên mình xin mạn phép sửa đổi code trên một tẹo để nó kiểm tra đúng trong mọi trường hợp:
Mã:
Function tccheck(mst1) As Boolean
mst = Mid(mst1, 1, 10)
If IsNumeric(mst) Then
msttext = Format(mst, "0000000000")
Else
msttext = mst
End If
skt = CDbl(Mid(msttext, 1, 1)) * 31
skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
skt = skt + CDbl(Mid(msttext, 9, 1)) * 3
tccheck = (CDbl(Mid(msttext, 10)) = 10 - skt Mod 11)
End Function
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn có thể tra mã số thuế trong trang web của Tổng cục Thuế, nhưng trong đó họ cảnh báo đó chỉ là để tham khảo thôi chứ mình thấy cũng chưa cập nhật đâu. (nhưng mình cũng hay tra thấy cũng khá chính xác đấy)
 
Ah cái này đã có bên www.webketoan.com nếu bạn tìm không ra mình sẽ tìm ở nhà và gửi cho bạn.
 
Chú yeudoi ơi bên đó em tìm hỏng ra!$@!! , hay là chú share ;;;;;;;;;;; qua email của cháu nha bdnatuan@gmail.com
 
Lần chỉnh sửa cuối:
ôi bữa nay mình có thêm một đứa cháu nữa. uh để chú tìm lại thử.
 
Cong thuc thue C#

Private Function MSTcheck(ByVal mst1) As Boolean

Dim msttext, skt, mst As String

If Len(mst1 & "") = 13 Or Len(mst1 & "") = 10 Then
mst = Mid(mst1, 1, 10)
If IsNumeric(mst) Then
msttext = mst
Else

Exit Function
End If
msttext = mst

skt = CDbl(Mid(msttext, 1, 1)) * 31
skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
skt = skt + CDbl(Mid(msttext, 9, 1)) * 3
MSTcheck = (CDbl(Mid(msttext, 10)) = 10 - skt Mod 11)
End If
End Function
 

File đính kèm

  • Tra thue.zip
    6.2 KB · Đọc: 311
Đang nhờ mọi người giúp đỡ bài này mà chưa thấy ai phản hồi.
Mình nhớ có bài viết về tra tỷ giá cũng kiểu lấy dữ liệu từ 1 trang web vào excel. Nhưng cái này nhiều dữ liệu và có dữ liệu nhập vào từ cel nên cũng chưa áp dụng được. Mong mọi người giúp đỡ
Cảm ơn nhiều
 
Đang nhờ mọi người giúp đỡ bài này mà chưa thấy ai phản hồi.
Mình nhớ có bài viết về tra tỷ giá cũng kiểu lấy dữ liệu từ 1 trang web vào excel. Nhưng cái này nhiều dữ liệu và có dữ liệu nhập vào từ cel nên cũng chưa áp dụng được. Mong mọi người giúp đỡ
Cảm ơn nhiều

Biết được đường link URL tới database thì mọi chuyện rất đơn giản. Vụ tra tỷ giá cũng là nhờ biết được đường link mà thôi. Để biết được đườnglink thì phải do nhà cung cấp dịch vụ web đó cấp thímơi biết.
 
Gửi anh Tuân.
Em thấy vụ file tỷ giá cũng chỉ có link đến trang tỷ giá mà thôi. dùng 1 đoạn code kết nối vào đó, sau đó copy table tại web đó dán vào bảng tính.
Cụ thể code dưới đây

****************
Private Sub CommandButton1_Click()
Dim objWeb As QueryTable
Dim sWebTable As String
'Trong ma html cua site nay ty gia duoc luu trong table thu 3
sWebTable = 3
Set objWeb = ActiveSheet.QueryTables.Add( _
Connection:="URL;http://www.vnmedia.vn/giavang_tygia.asp", _
Destination:=Range("A1"))

With objWeb

.WebSelectionType = xlSpecifiedTables
.WebTables = sWebTable
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Set objWeb = Nothing
Range("A22:E22").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Website: http://www.ruadangyeu.info"
End Sub

**************
Như trên, nó chỉ có kết nối vào địa chỉ :http://www.vnmedia.vn/giavang_tygia.asp,


ở đây, cũng đã có link vào web :http://www.gdt.gov.vn/gdtLive/Khoi-...-ve-nguoi-nop-thue?&location=tct&location=tct.
Liệu anh và mọi người có 1 giải pháp nào nữa ko?
Cảm ơn nhiều
 
http://www.vnmedia.vn/giavang_tygia.asp chính là đường link tới table mà. Vấn đề là cái bảng thông tin mã số thuế kia là đường link nào? Cái đường dẫn mà minhnc chỉ là đường link tới trang web thôi chứ không phải tới một table của nó.
 
Vui một chút

Ta có thể rút gọn lại hàm này bằng viếc khai báo thêm 1 biến vòng lặp & hàm CHOOSE() hỗ trợ, phải không các bạn(?):-=

PHP:
Private Function MSTcheck(ByVal mst1) As Boolean 
 Dim msttext, skt, mst As String
 
 If Len(mst1 & "") = 13 Or Len(mst1 & "") = 10 Then
     mst = Mid(mst1, 1, 10)
     If IsNumeric(mst) Then
           msttext = mst
     Else 
           Exit Function
    End If
    msttext = mst
' *    *        *    *    *        *    *    *        *' 
    skt = CDbl(Mid(msttext, 1, 1)) * 31
    skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
    skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
    skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
    skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
    skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
    skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
    skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
    skt = skt + CDbl(Mid(msttext, 9, 1)) * 3
' *    *        *    *    *        *    *    *        *'
MSTcheck = (CDbl(Mid(msttext, 10)) = 10 - skt Mod 11)
End If
End Function

Mong các bạn thử sức!
 
Mình xin giải thích rõ hơn một chút, quy luật của một mã số thuế bất kỳ là:
Gọi số thứ 1 là S1, 9 là S9; số thứ 10 là S10
Nếu giá trị của MOD(10-(S1*31+S2*29+S3*23+S4*19+S5*17+S6*13+S7*7+S8*5+S9* 3),11) bằng đúng S10 thì mã số thuế đấy là đúng đấy các bạn ạ.

Và vì mã số thuế có thể có lúc là "0101567589-001" nên mình xin mạn phép sửa đổi code trên một tẹo để nó kiểm tra đúng trong mọi trường hợp:
Mã:
Function tccheck(mst1) As Boolean
mst = Mid(mst1, 1, 10)
If IsNumeric(mst) Then
msttext = Format(mst, "0000000000")
Else
msttext = mst
End If
skt = CDbl(Mid(msttext, 1, 1)) * 31
skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
skt = skt + CDbl(Mid(msttext, 9, 1)) * 3
tccheck = (CDbl(Mid(msttext, 10)) = 10 - skt Mod 11)
End Function
Sao mình kiểm tra với dãy số: 1245789 lại cho kết quả là TRUE vậy??? ( = tccheck(1245789) =====> TRUE
 
Sao mình kiểm tra với dãy số: 1245789 lại cho kết quả là TRUE vậy??? ( = tccheck(1245789) =====> TRUE
Qui luật của MST chỉ là điều kiện cần chứ không phải là điều kiện đủ để xác định một dãy số có phải là MST hay không. Thế này nhé: Một MST đúng thì bắt buộc phải theo quy luật này nhưng một dãy số có quy luật này thì chưa chắc là một MST.
 
Bạn nào có cách gì để kiểm tra mã sổ thuế từ excel sau đó chuyển qua phần mềm thuế không xin cảm ơn!Bạn nào có gửi cho mình xin nhé cả cách hưởng dẫn sử dụng nữa.mai :vienhaiduonghoc@yahoo.com.nhớ gủi cho mình nhé
 
Web KT
Back
Top Bottom