Tìm số không liên tục trong dãy số (1 người xem)

Liên hệ QC

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

youkosuk

Thành viên chính thức
Tham gia
23/6/08
Bài viết
98
Được thích
22
Anh chị nào giúp em lấy được các số không liên tục trong một dãy số không ?

Vi dụ: 1,2,3,4,5,7,8,9 thi khong co so 6. Làm cách nào để biết là không có số 6 và lấy số ra.

Cái bảng dữ liệu của me nó nhiều quá không biết số nào bị sót. Nhờ các anh chị giúp đỡ.

Em có đọc bài ở mục này:Kiểm tra sự liên tục của các số trong 1 cột. nhưng không biết sử dụng cái này như thế nào.:=\+:=\+:=\+:=\+:=\+

Loay hoay làm mãi mà chẳng có kết quả gì. Gấp lắm rùi, chuẩn bị quyết toán nữa.Giúp em với các sư phụ ơi.
 
Anh chị nào giúp em lấy được các số không liên tục trong một dãy số không ?

Vi dụ: 1,2,3,4,5,7,8,9 thi khong co so 6. Làm cách nào để biết là không có số 6 và lấy số ra.

Cái bảng dữ liệu của me nó nhiều quá không biết số nào bị sót. Nhờ các anh chị giúp đỡ.

Em có đọc bài ở mục này:Kiểm tra sự liên tục của các số trong 1 cột. nhưng không biết sử dụng cái này như thế nào.:=\+:=\+:=\+:=\+:=\+

Loay hoay làm mãi mà chẳng có kết quả gì. Gấp lắm rùi, chuẩn bị quyết toán nữa.Giúp em với các sư phụ ơi.
Với dảy số là số liên tục thì dể rồi... Người ta xác định được nguyên tắc số này cách số liền kề 1 đơn vị ---> Vậy xem như đã có thuật toán để làm
Còn với dử liệu thật của bạn, điều quan trọng nhất bạn cần xác định là: THẾ NÀO THÌ GỌI LÀ ĐẦY ĐỦ ---> Từ đây sẽ suy ra được THẾ NÀO THÌ GỌI LÀ THIẾU (Quá dể, không đủ là thiếu)
Nói ví dụ nhé:
- Bạn có 1 list đầy đủ
- Giờ bạn muốn kiểm tra xem trong 1 list khác, có Item nào bị thiếu không (so với list gốc)
Theo bạn có nên đưa file lên hay không?
 
Lần chỉnh sửa cuối:
Day la file du lieu cua minh

Mình có một bảng kê số hóa đơn đã phát hành trong năm, vì số lượng hóa đơn phát hành quá nhiều và số hủy cũng nhiều, nên khi quyết toán thì không thể nhớ được là mình đã hủy bao nhiêu số hóa đơn. Nếu ngồi đếm bằng tay hoặc đếm từng số hóa đơn trên Excel thì phê quá, mà kết quả thì không thể chắc chắn đúng đến mức tối thiểu.

Trên đây là file dữ liệu nhỏ, Bảng dữ liểu đầy đủ cả 50.000 cái hóa đơn, mà tìm bằng tay thì mỏi cả mắt. Mong mọi người giúp mình cái này.
 

File đính kèm

Lần chỉnh sửa cuối:
Em xin gửi một cách cực kỳ củ chuối? Nhưng vẫn chưa đúng yêu cầu đề lắm/ cho trường hợp thiếu đến hơn 2 số liên tiếp
--------
Mà mình thấy dữ liệu bạn gửi lên không ổn lắm. vì số hóa đơn bạn dùng theo quyển, mà quyển lại bố trí không liên tục. Ví dụ: từ số 000611 --> chuyển sang số 122883
Thì làm sao đây?
Theo mình kiểm soát hóa đơn hủy phải làm ngay từ đầu (chỉ với một cuốn sổ tay nhỏ cũng ổn)
Chứ việc xảy ra như này...mệt lắm


Suy nghĩ thêm đã
 

File đính kèm

Lần chỉnh sửa cuối:
Ghi bằng tay ?

Nếu ghi được bằng tay thì mình đã ghi rùi. Số lượng hóa đơn nhiều quá làm sao mà nhớ để ghi. Mà nếu ghi bằng tay thì minh lấy báo cáo sử dụng hóa đơn hàng tháng ra ghi lại cho rồi. Khỏi phải kiểm tra chi cho mắc công.

Hóa đơn thì số của mỗi cuốn khác nhau, nó chỉ liên tục được khoản 1000 số, qua cuốn khác thì là dãy số khác liên tục káhc rùi. khi bị hủy thì có lúc hủy gần cả 10 số, mà khi kê khai thuế thì có lúc 1 số hóa đơn được tách ra để kê khai 2 lần, khi lấy dữ liệu ra thì trên bảng kê sẽ có những hóa đơn trùng nhau nên khi tìm thì gặp nhiều khó khăn.

Còn file của mình đưa lên thì chỉ cắt một phần nhỏ dữ liện thôi. Vì file upload không được có dung lượng lớn nên mình chỉ đưa lên chừng đó thôi.

Thật lòng mong các anh chị giúp đõ mình. Cám ơn rất nhiều.
 
Lần chỉnh sửa cuối:
NDU đã viết:
Còn với dử liệu thật của bạn, điều quan trọng nhất bạn cần xác định là: THẾ NÀO THÌ GỌI LÀ ĐẦY ĐỦ ---> Từ đây sẽ suy ra được THẾ NÀO THÌ GỌI LÀ THIẾU (Quá dể, không đủ là thiếu)

Bạn nên nhớ hướng dẫn của anh NDU
Vấn đề ở thiếu hay đủ ở đây là ở chỗ bạn có dữ liệu của CÁI ĐỦ CHƯA?
Ví dụ: Dùng hóa đơn theo nguyên tắc dùng thứ tự lần lượt: mỗi cuốn là 50 số.
Bạn tạo một dữ liệu đủ là một cột (theo thứ tự -) đầy đủ gồm cả số mất, hủy và số vẫn dùng
-Sau đó bạn dùng công thức mảng so sánh dữ liệu dữ liệu 2 trường
- Những giá trị trả về False nghĩa là những số này đã hủy
- Những giá trị trả về True nghĩa là những số này đang dùng

Bạn xem ví dụ sau nhé (mình chỉ lấy ví dụ trong một quyển thôi 50 số hóa đơn)
Sau đó bạn lọc tay ra những giá trị False đó (làm thủ công một tí nhé mình cũng mới học Excel mà)
 

File đính kèm

Trường hợp nhiều cuốn hóa đơn

1. Cột kết quả có thể lấy được con số thiếu ra không thay vì trả về giá trị TRUE hay FALSE ?

2.Trường hợp từ 020401 đến 020550 có số 020404 xuất hiện 2 lần, 020471 xuất hiện 4 lần (trùng) thì kết quả không không như ví dụ nữa. (Vì trong kê khai thuế thí 1 hóa đơn có thể tách ra để kê khai). File này là dữ liệu thật phát hành khoản 200 cái hóa đơn (dung lượng lớn không đưa lên hết được). Bạn xem hộ mình.

3.Trường hợp nhiều cuốn hóa đơn có số khác nhau thì sao? vì số hóa đơn chỉ liên tục đến khoản 1000, sau đó chuyển qua số khác.
Nếu nhập vào cột dữ liệu đầy đủ thì biết nhập đến bao giờ cho xong ví số lượng hóa đơn rất lớn.

4.Cố gắng giúp mình vụ này. Bây gìơ phải về rùi. Cơ quan đóng cửa không cho làm nữa.
Thanks so much.
 

File đính kèm

Lần chỉnh sửa cuối:
1. Cột kết quả có thể lấy được con số thiếu ra không thay vì trả về giá trị TRUE hay FALSE ?

2.Trường hợp từ 020401 đến 020550 có số 020404 xuất hiện 2 lần, 020471 xuất hiện 4 lần (trùng) thì kết quả không không như ví dụ nữa. (Vì trong kê khai thuế thí 1 hóa đơn có thể tách ra để kê khai). File này là dữ liệu thật phát hành khoản 200 cái hóa đơn (dung lượng lớn không đưa lên hết được). Bạn xem hộ mình.

3.Trường hợp nhiều cuốn hóa đơn có số khác nhau thì sao? vì số hóa đơn chỉ liên tục đến khoản 1000, sau đó chuyển qua số khác.
Nếu nhập vào cột dữ liệu đầy đủ thì biết nhập đến bao giờ cho xong ví số lượng hóa đơn rất lớn.

4.Cố gắng giúp mình vụ này. Bây gìơ phải về rùi. Cơ quan đóng cửa không cho làm nữa.
Thanks so much.
Thật ra tôi cũng chưa hiểu lắm những câu hỏi của bạn! Dựa vào list mà bạn nói là đầy đủ, tôi tìm ra số thiếu bằng 2 cách:
- Liệt kê số thiếu, dùng VBA
- Tô màu số thiếu, dùng Conditional Formating
Xem file ---> Có gì chưa đúng ta bàn tiếp
(Trong file này, tôi tìm theo nguyên tắc: Cứ không có trong list đầy đủ thì xem như là THIẾU)
 

File đính kèm

Bạn thử kiểm lại xem sao, theo file đính kèm!

PHP:
Option Explicit

Sub TimThieu()
 Dim lRw As Long, Jj As Long, Ww As Long
 Dim bColor As Byte
 
 lRw = [d65500].End(xlUp).Row:                      bColor = 33
 Range("D4:D" & lRw).ClearFormats:                  Range("F2:F" & lRw).Clear
5 Range("F4:F" & lRw).NumberFormat = "000###":            [f4] = 0
 For Jj = 5 To lRw
    With Cells(Jj, "D")
        If CLng(.Value) > 1 + CLng(.Offset(-1)) And .Offset(, -1).Value = .Offset(-1, -1).Value Then
            For Ww = 1 To (.Value - .Offset(-1) - 1)
                [f65500].End(xlUp).Offset(1).Value = .Offset(-1) + Ww
                bColor = bColor + Ww
                If bColor > 41 Then bColor = 34
                [f65500].End(xlUp).Interior.ColorIndex = bColor
            Next Ww
            .Interior.ColorIndex = bColor
            bColor = 33
        End If
    End With
 Next Jj
End Sub
 
Lần chỉnh sửa cuối:
Còn 1 xíu mới thấy ok được.

1-Theo cách của bạn ndu96081631 thì mình tìm ra đúng số mà đã bị thiếu, nhưng khi nhấn vào nút TÌM SỐ THIẾU 2 lần thì nó sẽ thêm số thiếu mà nó tìm ra đầu tiên thêm 1 lần nữa, có nghĩa là trong danh sách thay vì chi có 29 số thiếu thì nó lại đưa đưa ra 30 số thiếu.

Một điều nữa là có thể tự động đưa ra một danh sách đầy đủ đượng không , thay vì mình phải nhập 1 cái list đầy đủ thì nó đọc trong cái dãy chưa đầy đủ có bao nhiêu dẫy và sẽ tạo ra bấy nhiêu dãy đầy đủ, điều kiện biên đọ làm tròn dãy là 50 số.

Ví dụ như: trong 1 dãy 3 dãy không đầy đủ: 00561 đến 00572, 12200 đến 12289, 45001 đến 45525 thì nó sẽ đữa ra 3 dãy đầy đủ là: 00561 đến 00600, 12200 đến 12300, 45001 đến 45550

2-Theo cách của bạn ChanhTQ@ thì rất cám ơn bạn đã giúp đỡ, nhưng thiệt tình hỏng biết sử dụng như thế nào ? Có thể hướng dẫn mình cách tạo ra 1 cái nút như bạn ndu96081631 được không ?
 

File đính kèm

Lần chỉnh sửa cuối:
1-Theo cách của bạn ndu96081631 thì mình tìm ra đúng số mà đã bị thiếu, nhưng khi nhấn vào nút TÌM SỐ THIẾU 2 lần thì nó sẽ thêm số thiếu mà nó tìm ra đầu tiên thêm 1 lần nữa, có nghĩa là trong danh sách thay vì chi có 29 số thiếu thì nó lại đưa đưa ra 30 số thiếu.
?
Sơ ý thôi!
- Bạn mở file lên ---> Bấm Atl + F11
- Trong cửa sổ này, bấm vào mục Modules ở khung trái, rồi tiếp tục double click vào Module1, bạn sẽ nhìn thấy code ở khung phải ---> Dòng thứ 2 của code là:
Range([I4], [I65536].End(xlUp)).Offset(1).ClearContents
Bạn sửa lại thành:
Range([I4], [I65536].End(xlUp)).ClearContents
Đóng cửa sổ này lại rồi bấm nút chạy lần nữa xem
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bạn nhiều, về cơ bản mình đã làm được.

Về cơ bản đã giải quyết được vấn đề, nhưng vẫn còn công phú quá, cái list đầy đủ vẫn chưa tự động được
 
Thêm nút lệnh & hướng dẫn khi dùng

. . .
2-Theo cách của bạn ChanhTQ@ thì thiệt tình hỏng biết sử dụng như thế nào ? Có thể hướng dẫn mình cách tạo ra 1 cái nút như bạn ndu96081631 được không ?
Xin lỗi bạn vì chưa hướng dẫn sử dụng, như sau:

* Khi bấm nút chạy macro, ta sẽ có hai cột bị tô các màu khác nhau ở những số liệu khác nhau;
Khẳng định những ô được tô màu sẽ liên quan đến các vận đơn đang thiếu (cột 'F') hay gần ngay với vận đơn thiếu (cột 'D')
Màu sắc khác nhau, chứng tỏ chúng thiếu nhiều hay ít trong khoảng liên tục của chúng, ví dụ:
(+) Ô [D10] được tô màu lơ do phiếu 000567 thiếu; nhưng ô [D21] màu vàng nhạc do 2 phiếu trên nó thiếu; Ô [d47] màu tím do 4 phiếu trên nó thiếu, . . .
(+) Ô [F13] có màu xanh dương do trên nó liên tục liệt kê các hóa đơn từ 000574 ... 000579 ( mà trong đó có 2 ô màu tím). Thực ra kể cả [F14] cũng phải tô màu sẩm hơn, nhưng chúng ta xài có 6 màu nền nên gây trùng lặp lại màu ban đầu)
Chúc vui.
 
Lần chỉnh sửa cuối:
OK

Minh làm được cái cái nút rùi, nhưng ở dòng kết quả thì ô đâu tiên sao lại có 3 số không (000) ?

Mà bạn có thể cho hiện kết quả nằm ở cột ghi chú được không ? nếu được như thế này thì tiện quá ?

Trong trường hợp cái dãy số hóa đơn mình chưa sắp sếp theo thứ tự tăng dần thì sẽ bị lỗi không tìm được.
 

File đính kèm

Lần chỉnh sửa cuối:
Minh làm được cái cái nút rùi, nhưng ở dòng kết quả thì ô đâu tiên sao lại có 3 số không (000) ?
(+) Xin chúc mừng với thành công mới!
(+) có ba số 'OOO' do các câu lệnh tại dòng 5 (Mình vừa thêm số dòng lệnh tại bài trước, xem lại, nếu còn quan tâm)
Câu đầu, chúng ta formmat toàn cột dữ liệu ;
Câu lệnh sau của dòng, ta lại gán cho nó trị => 0 mà.
(Câu sau này nhằm chép các hóa đơn thiếu vô dưới ô này, [F4])
Mà bạn có thể cho hiện kết quả nằm ở cột ghi chú được không ? nếu được như thế này thì tiện quá ?
Trong trường hợp cái dãy số hóa đơn mình chưa sắp sếp theo thứ tự tăng dần thì sẽ bị lỗi không tìm được.
Bạn xem trong file đính kèm & làm lại cho mình nút lệnh mới để chạy macro; Trong trường hợp ngược lại, tạm dùng fím nóng vậy nha!

PHP:
Option Explicit

Sub TimThieu()
 Dim lRw As Long, Jj As Long, Ww As Long
 Dim bColor As Byte
 
 lRw = [d65500].End(xlUp).Row:                      bColor = 33
 Range("D3:D" & lRw).ClearFormats:                  Range("L3:L" & lRw).Clear
 Range("L3:L" & lRw).NumberFormat = "000###"
 For Jj = 4 To lRw
    With Cells(Jj, "D")
        If CLng(.Value) > 1 + CLng(.Offset(-1)) And .Offset(, -1).Value = .Offset(-1, -1).Value Then
            For Ww = 1 To (.Value - .Offset(-1) - 1)
                [L65500].End(xlUp).Offset(1).Value = .Offset(-1) + Ww
                bColor = bColor + Ww
                If bColor > 41 Then bColor = 34
                [L65500].End(xlUp).Interior.ColorIndex = bColor
            Next Ww
            .Interior.ColorIndex = bColor
            bColor = 33
        End If
    End With
 Next Jj
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Sao nó lại như thế này ?

1- Bạn xem lại họ mình cái file, sao minh copy dữ liệu khác bỏ vào thì nó lại bị lỗi tại (bColor = bColor + Ww)

2- Khi insẻt them 24 dong trống ở trên, Dữ liệu chạy từ dòng D24 trở đi, kết quả hiện từ dòng L24 trở đi. thì lại báo lỗi ở. If CLng(.Value) > 1 + CLng(.Offset(-1)) And .Offset(, -1).Value = .Offset(-1, -1).Value Then

Không biết mình có làm gì sai không ?
 

File đính kèm

Lần chỉnh sửa cuối:
Sao nó lại như thế này ?
1- Bạn xem lại họ mình cái file, sao minh copy dữ liệu khác bỏ vào thì nó lại bị lỗi tại (bColor = bColor + Ww)
2- Khi insẻt them 24 dong trống ở trên, Dữ liệu chạy từ dòng D24 trở đi, kết quả hiện từ dòng L24 trở đi. thì lại báo lỗi ở. If CLng(.Value) > 1 + CLng(.Offset(-1)) And .Offset(, -1).Value = .Offset(-1, -1).Value Then
Không biết mình có làm gì sai không ?

(1) Hẵn nhiên có sai ở chổ nào đó, vì trước khi đưa file lên mình đã thử vài bận rồi mà, này nha:

Nếu dữ liệu bắt đầu từ dòng thứ 4, thì vòng lặp bắt đầu xét từ dòng 5, để có cái mà so sánh chứ!
Khi bạn thêm 24 dòng trống, đương nhiên trong macro phải đổi các thông số mới làm việc bình thường được.

(2) bColor là biến chỉ dao động từ 33 cho tới 42 gì đó là cùng thôi, nên lỗi này không có file thì mình chịu chết thôi!

(3) Nếu không tiện đưa file lên, mình sẽ diễn dịch macro để tự bạn sửa cho fù hợp, một khi có iêu cầu.

Thân ái.
 
File đây

bạn xem hộ mình cái file minh làm trên tờ khai thuế no như thế này.

Không biết mình sửa lại mấy cái số như thế nào mà nó chạy tùm lum.
 

File đính kèm

So sanh

2-Cho mình hỏi thêm cái này, mình đem so sánh cách làm của 2 bạn ChanhTQ va ndu96081631 thì kết qảu của 2 bạn là khác nhau mặc dù cùng 1 dữ liệu. (File sosanh).
Trong file có 2 sheet: Sheet 1 là làm theo của bạn ChanhTQ còn Sheet 2 là làm theo bạn ndu96081631.

Tìm theo cách của bạn ChanhTQ thìkhông tìm ra được số 045301
Còn theo cách của bạn ndu96081631 thì tìm ra số 045301.
Kiểm tra lại trên số liệu nhập trong phần mềm thì số hóa đơn này mình đã bị huỷ.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình phân tích cái chưa đúng, như thế này

bạn xem hộ mình cái file minh làm trên tờ khai thuế no như thế này. Không biết mình sửa lại mấy cái số như thế nào mà nó chạy tùm lum.
Mã:
 [COLOR=Lime]Range("D24:D" & lRw).ClearFormats: [/COLOR]                 Range("L24:L" & lRw).Clear
 Range("L24:L" & lRw).NumberFormat = "000###"

Khi mới chép dữ liệu qua, vùng [L17:L655..] là không có dữ liệu;
Bạn chạy macro lần đầu
khi nó thấy hóa đơn thiếu nó sẽ chép vô lần lượt từ trên xuống, bắt đầu từ [L17]
Câu lệnh này chứng tỏ điều đó:
Mã:
 [L65500].End(xlUp).Offset(1).Value = .Offset(-1) + Ww
Nhưng lần chạy sau, bạn & tôi, chúng ta chỉ xóa các dữ liệu mới phát sinh từ sau ô [L23] bằng câu lệnh
Range("L24:L" & lRw).Clear trích dẫn bên trên
như vậy vùng [L17:L23] không bao giờ thay đổi nữa; & chính vùng này làm bạn hoa mắt.

Cách sửa ư?

chọn 1 trong hai cách:
(1) Muốn nó chép hóa đơn chưa có từ [L17] thì sửa lại lệnh có Clear cho đúng
(2) muốn nó chép từ [L24], thì từ đầu chương trình (nói cho to tác) ta cho [l23]=0
Còn câu lệnh format = "000###" bạn nới rọng cả cột cũng không ảnh hưởng đến ai.

Một khi sửa được rồi thì hôm nay bạn sẽ ngủ ngon giấc, chắc vậy.

Thân ái.
 
Vẫn chưa ngủ ngon được bạn ui !

:=\+ 2-Cho mình hỏi thêm cái này, mình đem so sánh cách làm của 2 bạn ChanhTQ va ndu96081631 thì kết qảu của 2 bạn là khác nhau mặc dù cùng 1 dữ liệu. (File sosanh).
Trong file có 2 sheet: Sheet 1 là làm theo của bạn ChanhTQ còn Sheet 2 là làm theo bạn ndu96081631.

Tìm theo cách của bạn ChanhTQ thìkhông tìm ra được số 045301
Còn theo cách của bạn ndu96081631 thì tìm ra số 045301.
Kiểm tra lại trên số liệu nhập trong phần mềm thì số hóa đơn này mình đã bị huỷ.

File so sánh mình có attached bên dưới .
 
Không tìm ra là đúng đó!

Vì mã số của 2 loại hóa đơn khác nhau mà:
|C|D
583| CT/2008N:00906 |045300
584| CT/2008N:00907 |045302
|@$@!^%|:-=
 
Lần chỉnh sửa cuối:
Vì mã số của 2 loại hóa đơn khác nhau mà:
|C|D
583| CT/2008N:00906 |045300
584| CT/2008N:00907 |045302
|@$@!^%|:-=
1-Bản dữ liệu này thì cột ký hiệu là cột thông tin thôi chứ không có ý nghĩa gì, nếu khác nhau hư bạn nói thì số đầu tiên của CT/2008N:00907 thì phải là 045301 chứ.

2-Ví dụ mình để trống luôn cột ký hiệu thì tìm ra quá trùi số luôn. Bạn thử xáo luôn cột KÝ HIỆU luôn xem sao.

chọn 1 trong hai cách:
(1) Muốn nó chép hóa đơn chưa có từ [L17] thì sửa lại lệnh có Clear cho đúng ??????
(2) muốn nó chép từ [L24], thì từ đầu chương trình (nói cho to tác) ta cho [l23]=0 ?????

potay rùi bạn ui, hỏng biết sữa sao hết, mấy ngày nay ăn không ngon ngủ vì cái này đây.)*&^). Giúp cho trót luôn đi bạn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sửa theo phương án 1 & cột 'C' không ảnh hưởng trong việc tìm HĐ thiếu

Bạn copy macro này, chép đè lên cái trước & chạy thử!


Mã:
Option Explicit

Sub TimThieu()
 Dim lRw As Long, Jj As Long, Ww As Long
 Dim bColor As Byte
 
 lRw = [d65500].End(xlUp).Row:                      bColor = 33
 Range("D3:D" & lRw).ClearFormats:                  Range("L17:L" & lRw).Clear
 Range("L17:L" & lRw).NumberFormat = "000###"
 For Jj = 4 To lRw
    With Cells(Jj, "D")
        If CLng(.Value) > 1 + CLng(.Offset(-1))  Then [COLOR=Blue][B] '!Loại cột 'C' ra khỏi vòng chiến!'[/B][/COLOR]
            For Ww = 1 To (.Value - .Offset(-1) - 1)
                [L65500].End(xlUp).Offset(1).Value = .Offset(-1) + Ww
                bColor = bColor + Ww
                If bColor > 41 Then bColor = 34
                [L65500].End(xlUp).Interior.ColorIndex = bColor
            Next Ww
            .Interior.ColorIndex = bColor
            bColor = 33
        End If
    End With
 Next Jj
End Sub
 
1-Vẫn chạy không được báo lỗi ngay dòng IF. Bạn xem lại hộ cái file.

Cột C nếu mình sữa lại thành 00907 thì tìm được 045301 còn để nguyên thì không, không biết nguyên do từ đâu ?
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi có đoạn mã này chạy ra kết quả y xì như của ChanhTQ, chẳng biết có đúng không, bạn thử test xem thế nào nhé
PHP:
Sub TimSoTrong()
    Dim I As Long, K As Long, SoThieu As Long
    Dim Quyen As String
    Dim So As Long
    I = 3 'Dòng đầu tiên chứa mã số hóa đơn
    Quyen = Cells(I, 3).Value
    So = Cells(I, 4).Value
    SoThieu = 3 'Dòng đầu tiên bắt đầu ghi số thiếu
    While Cells(I, 3).Value = Quyen
        If Cells(I, 4).Value - So > 1 Then
            For K = So + 1 To Cells(I, 4).Value - 1
                Cells(SoThieu, 14).Value = Format(K, "00000#")  'Ghi số thiếu vào cột 14
                SoThieu = SoThieu + 1
            Next
        End If
        So = Cells(I, 4).Value
        I = I + 1
        If Cells(I, 3).Value <> Quyen And Cells(I, 3).Value <> "" Then
            If Split(Cells(I, 3).Value, ":")(1) - Split(Quyen, ":")(1) > 1 Then
                So = Cells(I, 4).Value
            Else
                So = Cells(I - 1, 4).Value
            End If
            Quyen = Cells(I, 3).Value
        End If
    Wend
End Sub
 
Lần chỉnh sửa cuối:
Tôi có đoạn mã này chạy ra kết quả y xì như của ChanhTQ, chẳng biết có đúng không, bạn thử test xem thế nào nhé
PHP:
        So = Cells(I, 4).Value

Bạn test lại giúp mình xem sao, minh test thử thì nó báo lỗi ở dòng này, không biết sao đây ? Với lại không thấy nó in kết quả ra ?
 

File đính kèm

Lần chỉnh sửa cuối:
Trời, ai mà biết được chứ, cái file lúc đầu down về thì cột 4 chứa số hóa đơn, cái file này lại là cột 9
Bạn sửa lại như sau nhé
PHP:
Sub TimSoTrong()
    Dim I As Long, K As Long, SoThieu As Long
    Dim Quyen As String
    Dim So As Long
    I = 3 'Dòng đầu tiên chứa mã số hóa đơn
    Quyen = Cells(I, 3).Value
    So = Cells(I, 9).Value'Ô chứa giá trị số hóa đơn
    SoThieu = 3 'Do`ng dâ`u tiên ba´t dâ`u ghi sô´ thiê´u
    While Cells(I, 3).Value = Quyen
        If Cells(I, 9).Value - So > 1 Then
            For K = So + 1 To Cells(I, 9).Value - 1
                Cells(SoThieu, 14).Value = Format(K, "00000#") 'Ghi sô´ thiê´u va`o cô?t 14
                SoThieu = SoThieu + 1
            Next
        End If
        So = Cells(I, 9).Value
        I = I + 1
        If Cells(I, 3).Value <> Quyen And Cells(I, 3).Value <> "" Then
            If Split(Cells(I, 3).Value, ":")(1) - Split(Quyen, ":")(1) > 1 Then
                So = Cells(I, 9).Value
            Else
                So = Cells(I - 1, 9).Value
            End If
            Quyen = Cells(I, 3).Value
        End If
    Wend
End Sub
Bạn tìm hiều kỹ hơn về đoạn mã này, nếu dữ liệu của bạn định dạng khác thì phải tùy biến đoạn mã theo cho phù hợp vì có thể các file dữ liệu của bạn sẽ có định dạng khác nhau.
Mà này, buôn lậu hóa đơn hay sao mà nhiều thế, có bị bắt thì đừng lôi tôi ra nhé.
 
Lần chỉnh sửa cuối:
vô lý nhi, tôi vưa test ok mà, bạn pót lai file do xem nao.
Sorry, dang dung mobile nen ngai viet dau.

bạn xem file này thủ nhé. Mình kểim tra là 29 số, test thì có 28 số thui

Vẫn giống như trước, nếu sữa lại CT/2008N: 00907 ngay chỗ 045300 thì mới tìm đực số 0045301
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
|C|D
189| UV/2007N:00015 |000750
190| LV/2008N:00376 |018751
|@$@!^%|18001
Như vậy tại đây phải liệt kê 18001 hóa đơn thiếu ư?
 
Tôi test lại rồi. OK, chính xác 29 số. Chẳng hiểu các bạn làm thế nào mà lại bị như thế.
Không cần thêm khoảng trống vào như thế này CT/2008N: 00907. Vẫn y nguyên như cũ, tôi thêm thủ tục Trim và Val để loại bỏ một số tình huống xấu.
Thử test lại theo File đính kèm nhé.
Ý kiến của ChanhTQ rất hay, cần bổ sung thêm trường hợp số đầu tiên của 1 quyển được bắt đầu là bao nhiêu và số kết thúc của 1 quyển là bao nhiêu để liệt kê ra cho chính xác.
 

File đính kèm

1-Tối về ngủ không được vì cái vụ số 045301, Sáng nay lên mở file của ban hoa35ktxd thì quả là có tìm được số này, nhưng có điều nếu mình xáo đi số đầu tiên la 000561 thì số thiếu hiện ra nhiều hơn 29 số. (bạn thử xoá 1 số đầu tiên của dãy số xem sao).

2- Trong trường hợp một cuốn hóa đơn có 50 số, nếu 50 số này nằm đầu tiền của dãy số mà trong 50 số này lại mất hết 10 số đầu tiên thì những số mất này không thể tìm được.


Các bạn thử suy nghỉ trường hợp này xem sao ? Thanks
 
Lần chỉnh sửa cuối:
2- Trong trường hợp một cuốn hóa đơn có 50 số, nếu 50 số này nằm đầu tiền của dãy số mà trong 50 số này lại mất hết 10 số đầu tiên thì những số mất này không thể tìm được.
Các bạn thử suy nghỉ trường hợp này xem sao ? Thanks
Mình nghỉ rằng phải có chí ít 1 cột, đa số dữ liệu trong cột này để trống, nhưng số đầu & số cuối của cuốn hóa đơn phải ghi số bắt đầu & số cuối của cuốn (Như vậy 50 ô trong cột sẽ có 2 ô chứa dữ liệu), cho rằng chúng là dòng Da & Dz
vậy ô bên cột 'D' cùng dòng sẽ ghi:
* Số hòa đơn đầu tiên của cuốn, nếu nó thỏa;
* Để trống, nếu nó thiếu
& như vậy các macro trên sẽ phải xử lý tiếp vụ này (khi gặp cột 'D' có ô trống.)


E rằng các cách đưa ra không biết bạn có thực hiện được không thôi - Có khi đó mới là điều quan trọng.


1-Tối về ngủ không được vì cái vụ số 045301, Sáng nay lên mở file của ban . . . .[/COLOR][/I][/B]

1/4 tứ khoái không ổn, chắc cũng sẽ ảnh hưởng đến các thứ khác. . . .
Nhưng bạn thấy không, từ khi có Topic này đến giờ, bạn đã được rất nhiều nỗi nhọc nhằn & kèm theo chúng là biết bao điều bổ ích đó nhỉ, phải thế không?

Nói vui vậy thôi; Nhưng chớ đem nhiều những tứ khoái lên diễn đàn trình bày tại những topic nghiêm túc như thế này, nào là
* tớ đói rồi, đi ăn thội
* Ngủ đi thội
* Nhậu ngất ngư . . .
* . . . .
(Đó là suy nghỉ của mình, bạn đừng trách nhiều, tội nghiệp nhe!)

Thân ái!
 
Mình nghỉ rằng phải có chí ít 1 cột, đa số dữ liệu trong cột này để trống, nhưng số đầu & số cuối của cuốn hóa đơn phải ghi số bắt đầu & số cuối của cuốn (Như vậy 50 ô trong cột sẽ có 2 ô chứa dữ liệu), cho rằng chúng là dòng Da & Dz
vậy ô bên cột 'D' cùng dòng sẽ ghi:
* Số hòa đơn đầu tiên của cuốn, nếu nó thỏa;
* Để trống, nếu nó thiếu
& như vậy các macro trên sẽ phải xử lý tiếp vụ này (khi gặp cột 'D' có ô trống.)


E rằng các cách đưa ra không biết bạn có thực hiện được không thôi - Có khi đó mới là điều quan trọng.




1/4 tứ khoái không ổn, chắc cũng sẽ ảnh hưởng đến các thứ khác. . . .
Nhưng bạn thấy không, từ khi có Topic này đến giờ, bạn đã được rất nhiều nỗi nhọc nhằn & kèm theo chúng là biết bao điều bổ ích đó nhỉ, phải thế không?

Nói vui vậy thôi; Nhưng chớ đem nhiều những tứ khoái lên diễn đàn trình bày tại những topic nghiêm túc như thế này, nào là
* tớ đói rồi, đi ăn thội
* Ngủ đi thội
* Nhậu ngất ngư . . .
* . . . .
(Đó là suy nghỉ của mình, bạn đừng trách nhiều, tội nghiệp nhe!)


1-Theo mình thì thông thường hóa đơn của bộ tài chí phát hành thì một cuốn có số bắt đầu thường là 01, 51 và kết thúc là số 00, 50, nên chỉ cần kiểm tra nếu không bắt đầu bằng những số này sẽ biết được những số thiếu là bao nhiêu.

2-Còn cái này " E rằng các cách đưa ra không biết bạn có thực hiện được không thôi - Có khi đó mới là điều quan trọng." potay.com rùi, mong bạn giúp mình.

3-Tú khoái thì khôgn giám đâu, mình có sao thì nói vậy thui. Mấy tuần này ăn không ngo ngủ khôgn yên là vì cái vụ này đây.
 
1-Theo mình thì thông thường hóa đơn của bộ tài chí phát hành thì một cuốn có số bắt đầu thường là 01, 51 và kết thúc là số 00, 50, nên chỉ cần kiểm tra nếu không bắt đầu bằng những số này sẽ biết được những số thiếu là bao nhiêu.

Đó là thông thường;
Còn có loại hóa đơn tự in nữa mà!

Hồi xưa, mình thấy có cơ quan tự in, cho đánh số 1.000 hóa đơn thành 1 cuốn nữa là.
Tất nhiên hóa đơn này phải đi đăng ký mới sử dụng được; Cắt cớ ông thuế Tỉnh lại chỉ cho đăng ký 1 lần 5.000 hóa đơn thôi, mệt. . .

Bạn nên hiểu rằng, có khi biết viết macro, nhưng chưa thấy cái hóa đơn Bộ Tài chánh ra làm sao đâu; Những thông tin mà bạn cho là bình thường như vậy, với người khác là 1 tin giật gân nữa là đằng khác. Mong bạn lưu tâm chổ này.
 
Đó là thông thường;
Còn có loại hóa đơn tự in nữa mà!

Hồi xưa, mình thấy có cơ quan tự in, cho đánh số 1.000 hóa đơn thành 1 cuốn nữa là.
Tất nhiên hóa đơn này phải đi đăng ký mới sử dụng được; Cắt cớ ông thuế Tỉnh lại chỉ cho đăng ký 1 lần 5.000 hóa đơn thôi, mệt. . .

Bạn nên hiểu rằng, có khi biết viết macro, nhưng chưa thấy cái hóa đơn Bộ Tài chánh ra làm sao đâu; Những thông tin mà bạn cho là bình thường như vậy, với người khác là 1 tin giật gân nữa là đằng khác. Mong bạn lưu tâm chổ này.

Khi mình đi mua hóa đơn bộ tài chính thì một lần 50 cuốn nhân với 50 số = 2500 số và số liên tục từ 002001 đến 002500 hoặc 002051 đến 00nên nhiều hay ít không quan trọng mà chủ yếu là quy luật đánh số hóa đơn như thế nào để tìm ra cách giải quyết bài toán cho phù hợp.

Còn hóa đơn tự in thì thông thường người ta cũng đăng ký lưu hành ở số chẳng cho dễ quản lý, chẳng ai dại gì mà đăng ký số lẻ để làm cực mình ra.

Trên đay là 1 số suy nghỉ của mình, cò gì không đúng mong bạn chỉ giáo thêm. Thanks
 
Lần chỉnh sửa cuối:
1-Tối về ngủ không được vì cái vụ số 045301, Sáng nay lên mở file của ban hoa35ktxd thì quả là có tìm được số này, nhưng có điều nếu mình xáo đi số đầu tiên la 000561 thì số thiếu hiện ra nhiều hơn 29 số. (bạn thử xoá 1 số đầu tiên của dãy số xem sao).

2- Trong trường hợp một cuốn hóa đơn có 50 số, nếu 50 số này nằm đầu tiền của dãy số mà trong 50 số này lại mất hết 10 số đầu tiên thì những số mất này không thể tìm được.
Các bạn thử suy nghỉ trường hợp này xem sao ? Thanks
Có lẽ bạn chưa hiểu về VBA và đối tượng của Excel nên bạn mới xóa số đó đi để kiểm tra đoạn mã của tôi.
Khi bạn xóa giá trị đó đi thì Cells.Value sẽ nhận giá trị 0 vì thế nó sẽ thêm vào 560 số trống.
Thực ra từ đầu đến giờ chúng ta bị cái tiêu đề do bạn đặt làm lệch hướng xử lý, chúng ta cú mải đi tìm số không liên tục nên mới vất vả như thế.
Qua các bài thảo luận tôi hiểu như thế này.
Bạn có nhiều quyển hóa đơn (buôn mà) mỗi quyển được in ấn phát hành theo 1 kiểu, mỗi quyển lại có số lượng hóa đơn khác nhau, không có chuẩn thống nhất (thế nên các cơ quan chức năng mới khó kiểm soát)
Bây giờ cần tìm ra những số hóa đơn chưa bán được trong cái mớ hỗn loạn kia để tính toán lãi lỗ ăn chia (chả lẽ lại đi giở các quyển ra để tìm à)
Tôi sẽ viết cho bạn 1 Form tìm số hóa đơn chưa được phát hành, với điều kiện bạn không được nhập số trống như bạn vừa thử xóa ở trên, cho phép các quyển hóa đơn có mã số hóa đơn trùng nhau, chỉ cần bạn cung cấp số đầu và số cuối là được.
Chờ 1 tiếng sau nhé.
 
Dự tính 1 tiếng nhưng mất gần 2 tiếng mới xong. Nói chung tạm ổn.
Lưu ý, có 2 cách tìm, tìm thủ công và tìm tự động.
Với cách tìm thủ công bạn bấm từ từ khi nào thấy nó thực hiện xong 1 quyển mới được bấm tiếp, đừng có bấm lia lịa sẽ bị lỗi đấy. Khi tìm thủ công bạn phải theo dõi số hóa đơn đầu và số hóa đơn cuối.
Với cách tìm tự động nó sẽ không ra 45301 vì số đầu và số cuối được nạp tự động từ biểu số liệu của bạn.
Tôi định bổ sung thêm chức năng tìm theo quy luật khá thú vị nhưng tạm thời để lại, phải xác minh chính xác động cơ của bạn, kẻo sau này lại bị kết tội tiếp tay con buôn.
Bạn xem file đính kèm nhé.
 

File đính kèm

Với cách tìm tự động nó sẽ không ra 45301 vì số đầu và số cuối được nạp tự động từ biểu số liệu của bạn.
Tôi định bổ sung thêm chức năng tìm theo quy luật khá thú vị nhưng tạm thời để lại, phải xác minh chính xác động cơ của bạn, kẻo sau này lại bị kết tội tiếp tay con buôn.

Cám ơn bạn cái form này, nó trên cả mong đợi của mình. (vì tính hỏi cách làm trên dòng bất kỳ, cột bất kỳ)

1-Về cách tìm thủ công, ngay chổ cuốn CT/2008N:00907, nếu mình không biết trước chổ này thiếu cái số 045301 thì mình dễ bị nhầm mõi khi tìm, vì thông thường cứ để nguyên dữ liệu mà bấm nút cho nó chạy, hay bị quên chổ này (làm việc máy móc mà). (bấm nhanh quá nó đứng luôn, bạn giúp luôn cái vụ).

2-Còn bấm tự động thì không có 045301 ? chắc mình tiu luôn quá.

3-Còn việc "có buôn bán không" thì nói thật, minh không giám làm đâu, mục đích của mình là chỉ cẩn tìm ra được chính xác bao nhiêu số hóa đơn đã bị huỷ, bao nhiêu số đã phát hành. Thế là đủ rùi. Vì mình đang làm cái báo cáo tình hình sủ hóa đơn của năm 2008 nên làm bằng tay thì hơi phê, mặc dù mình cũng tìm ra được.

4-Còn thêm chức năng mói thì bạn cứ nói luôn đi, mình chỉ mong cho nó chính xác là sướng lắm rùi.

Thanks.
 
Lần chỉnh sửa cuối:
OK, tôi có thể bổ sung chức năng tìm theo quy luật, và tất nhiên, các quyển hóa đơn của bạn cũng phải được đánh số theo 1 quy luật thống nhất.
Bạn hãy cho tôi biết những quy luật của nó là gì.
Theo biểu của bạn thì mỗi quyển chỉ có 50 tờ được bắt đầu bằng 01, kết thúc 50 hoặc bắt đầu bằng 51, kết thúc 00. Đây là 1 quy luật, tôi có thể tạo chức năng tự động phát hiện và fix luôn đối với trường hợp này.
 
OK, tôi có thể bổ sung chức năng tìm theo quy luật, và tất nhiên, các quyển hóa đơn của bạn cũng phải được đánh số theo 1 quy luật thống nhất.
Bạn hãy cho tôi biết những quy luật của nó là gì.
Theo biểu của bạn thì mỗi quyển chỉ có 50 tờ được bắt đầu bằng 01, kết thúc 50 hoặc bắt đầu bằng 51, kết thúc 00. Đây là 1 quy luật, tôi có thể tạo chức năng tự động phát hiện và fix luôn đối với trường hợp này.

Đúng như bạn nói, vì sáng nay mình lấy cái đóng hóa đơn ra xem cách đánh số thứ tự của các hóa đơn như thế nào. Kết quả là:
Vi dụ có 200 số hóa đơn như vậy là có 4 cuốn.
Quyển 1 là CT/2008N:01 có số từ 000001 đến 000050
Quyển 2 là CT/2008N:02 có số từ 000051 đến 000100
Quyển 3 là CT/2008N:03 có số từ 000101 đến 000150
Quyển 4 là CT/2008N:04 có số từ 000151 đến 000200

Từ đây mình rút ra quy luật là: 1 quyển hóa đơn số bắt đầu 01 kết thúc là 50; bắt đàu là 51 kết thúc 00.

Nên mình nghĩ kiểm tra kiểm tra nếu số đầu tiên của 1 quyển mà không bắt đầu bằng 01 hoặc 51 thì lấy số đó trừ đi 01 hoặc 51 thì chính là sso thiếu và kiểm tra số ở cuối cũng như vậy.

Ở đay mình chỉ nói tới hóa đơn mình lên cục thuế để mua, còn hóa đơn đăng ký tự in thì tùy quy luật của người đăng ký muốn đánh số như thế nào đó thì mình không giám chắc theo quy luật này.

Mình nhờ bạn thêm 1 vấn đề nữa là tính ra được tổng số hóa đơn đã sử dụng là bao nhiêu ?

Hiện tại mình dùng hàm Countif() để đếm trên cột số hóa đơn có bao nhiêu số không trùng, bao nhiêu số trùng 2 lần, bao nhiêu số trung 3 lần, bao nhiêu số trùng 4 lần, bao nhiêu số trung 5 lần,....,...(thông thường 1 hóa đơn chỉ tách ra kê khai 4 lần là hết rùi, có thể có trường hợp khai 5 lần, hoặc ....)

Sau đó trên cột kết quả của hàm Countif mới vừa tìm được mình lại dùng countif() đếm có bao nhiêu số 1, bao nhiêu số 2, bao nhiêu số 3,.....rùi lấy kết quả có bao nhiêu số 2 dem chia cho 2, bao nhiêu sso 3 đem chia 3, .....Sau đó tổng lại thì được tổng số hóa đon đã dùng là bao nhiêu.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đúng như bạn nói, vì sáng nay mình lấy cái đóng hóa đơn ra xem cách đánh số thứ tự của các hóa đơn như thế nào. Kết quả là:
Vi dụ có 200 số hóa đơn như vậy là có 4 cuốn.
Quyển 1 là CT/2008N:01 có số từ 000001 đến 000050
Quyển 2 là CT/2008N:02 có số từ 000051 đến 000100
Quyển 3 là CT/2008N:03 có số từ 000101 đến 000150
Quyển 4 là CT/2008N:04 có số từ 000151 đến 000200

Từ đây mình rút ra quy luật là: 1 quyển hóa đơn số bắt đầu 01 kết thúc là 50; bắt đàu là 51 kết thúc 00.

Nên mình nghĩ kiểm tra kiểm tra nếu số đầu tiên của 1 quyển mà không bắt đầu bằng 01 hoặc 51 thì lấy số đó trừ đi 01 hoặc 51 thì chính là sso thiếu và kiểm tra số ở cuối cũng như vậy.

Ở đay mình chỉ nói tới hóa đơn mình lên cục thuế để mua, còn hóa đơn đăng ký tự in thì tùy quy luật của người đăng ký muốn đánh số như thế nào đó thì mình không giám chắc theo quy luật này.
Với quy luật này thì tôi đã phát hiện ra rồi và cách xử lý cũng rất đơn giản như bạn đã nói, tuy nhiên với các loại hóa đơn khác thì chưa biết thế nào, về phương pháp thì vẫn có thể xây dựng được dạng tổng quát nhưng phải dùng đến nhiều biện pháp loại trừ, rất lằng nhằng.
Tạm thời tôi sẽ sửa lại cho bạn cách tìm tự động với trường hợp này thôi, còn trường hợp khác có lẽ bạn phải tự làm hoặc xem code của tôi để chỉnh sửa cho phù hợp.
Vấn đề tìm ra số hóa đơn đã phát hành thì trong Excel đã có hàm đó rồi thì phải hoặc bạn tìm trên diễn đàn có cách tìm tổng các số không trùng nhau.
 
OK, dù sao cũng cám ơn bạn hoa35ktxd và các thành viên khác, cái form cuối cùng làm mình thỏa mãn rất nhiều. Còn tính tổng các số hóa đơn đã dùng thì mình làm bằng tay cũng được, không quan trọng lắm. Cố gắng giúp mình cái vụ 045301. (báo cáo sếp vừa ký xong, đã trễ hạn 3 ngày, đành chịu).

Một lần nữa cám ơn các bạn rất nhiều. Chúc 1 ngày cuối tuần vui vẻ.
 
Lần chỉnh sửa cuối:
Thêm cái này nữa cho phê lòi mắt luôn.
Lọc ra tất cả các hóa đơn chưa phát hành theo chuẩn: 50 hóa đơn/quyển
 

File đính kèm

Thêm cái này nữa cho phê lòi mắt luôn.
Lọc ra tất cả các hóa đơn chưa phát hành theo chuẩn: 50 hóa đơn/quyển

Ái chà chà ! Không hiểu sao mình test thì nó ra tói 64 cái hóa đơn luôn.

Ái chà chà ! Không hiểu sao mình test thì nó ra tói 64 cái hóa đơn luôn.

Ok, hiểu rùi. Cái này ngon lành đây. Tìm được tất tần tật. Nhưng đừng bỏ cái phần tìm thủ công đi bạn ơi. Cái đó mình thấy hay đấy, ban đừng bỏ đi. Kiểm tra 2 cách bao giờ cũng hay hơn 1 cách mà.

Nhưng sao khi nhấn tìm nhiều lần thì nó lại hiện kết quả thành nhiểu lần mà không Clear dòng kết quả để in lại chổ đó mỗi lần tìm lại. (phải xóa dòng kết quả bằng tay thì mới cho kết quả mói được)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đúng rồi: Ngoài 29 cái theo như ban đầu thì quyển UV/2007N:00012 còn thiếu các số từ 551 đến 560 = 10 số; quyến LV/2008N:00377 bạn mới phát hành đến số 18825 còn từ 18826 đến 18850 chưa phát hành = 25 số, tổng cộng 35 số thêm + 29 số cũ = 64.
Tôi nói lại là cái này làm theo quy luật 50 hóa đơn/1 quyển. Số bắt đầu là 01 hoặc 51 số cuối là 00 hoặc 50. Phải có quy luật thì mới tìm tự động được như thế, nếu không thì chỉ có cách tìm thủ công như trước thôi.
Thêm động tác xóa đó thì có gì đâu, bạn chịu khó nghiên cứu đi, kể cả gộp 2 cái Form đó lại, thêm bớt chức năng cũng không khó đâu.
 
Lần chỉnh sửa cuối:
Đúng rồi: Ngoài 29 cái theo như ban đầu thì quyển UV/2007N:00012 còn thiếu các số từ 551 đến 560 = 10 số; quyến LV/2008N:00377 bạn mới phát hành đến số 18825 còn từ 18826 đến 18850 chưa phát hành = 25 số, tổng cộng 35 số thêm + 29 số cũ = 64.

Mình chợt nghỉ ra điều này, số 551 đến số 560 là số cuối của năm trước, còn 18826 đến 18850 là số chưa phát hành => như vậy bạn có thể cho vào 1 điều kiện nữa là số kết thúc của năm trước là 560 để khỏi phải đọc 551 đến 560 là số thiếu. Được như thế này nữa là quá hoàn hảo => hết ý kiến luôn.
 
Lần chỉnh sửa cuối:
Chỉnh sửa lần cuối bởi điều hành viên:
Đây là cách làm thủ công nhất
Tools>Customize...>Command>Macro
Kéo cái Custom Menu Item trong danh sách bên phải lên thanh menu
Thoát hộp thoại
Bấm vào cái Menu vừa kéo lên rồi chọn macro muốn gán cho nó
Muốn sửa tên menu thì làm lại như trên Tools>Customize... rồi bấm chuột phải vào cái menu vừa kéo lên để sửa. Menu này sẽ cố định.
Bạn có thể tham khảo thêm các bài viết về Menu trên diễn đàn này để có thể tự động gán menu khi mở File và tự hủy khi đóng file.
 
Đây là cách làm thủ công nhất
Tools>Customize...>Command>Macro
Kéo cái Custom Menu Item trong danh sách bên phải lên thanh menu
Thoát hộp thoại
Bấm vào cái Menu vừa kéo lên rồi chọn macro muốn gán cho nó
Muốn sửa tên menu thì làm lại như trên Tools>Customize... rồi bấm chuột phải vào cái menu vừa kéo lên để sửa. Menu này sẽ cố định.
Bạn có thể tham khảo thêm các bài viết về Menu trên diễn đàn này để có thể tự động gán menu khi mở File và tự hủy khi đóng file.
.

OK, cám ơn bạn đã hướng dẫn, mình hỏi thêm trường hợp mình muốn tạo thành add-in cho con Macro này thì như thế nào ?
 
Trời, đơn giản hơn đan rổ nhiều bạn ạ.
Chỉ việc việc save dưới dạng .xla là được, rồi vào Tools>Add-Ins browse đến file đó.
 
Lần chỉnh sửa cuối:
Tôi không hiểu ý "thường trú" của bạn là gì.
Bạn nên tìm đọc kỹ những bài viết về Menu và Add-Ins trên diễn đàn để biết cách áp dụng tùy theo nhu cầu của bạn nhé.
 

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

Back
Top Bottom