Xin giúp đỡ công thức hoặc code cho form đánh mã số tự động

Liên hệ QC

truongthedong

Thành viên mới
Tham gia
26/3/13
Bài viết
29
Được thích
0
Chào các anh/chị thành viên GPE
Mấy hôm nay nhờ các anh/chị trong GPE nhiệt tình giúp đỡ mà mình đã có command button để điền tên cha mẹ tự động.
Hôm nay, mình tiếp tục nhờ các anh/chị thành viên GPE giúp mình công thức hoặc VBA tương tự như userform mình đã vẽ trong file mẫu excel gởi đính kèm.

mô tả nội dung cần giúp đỡ:

Trong một gia đình, ví dụ có 5 người gồm: Chủ hộ, Vợ, Con, Con, Cháu. Khi lưu trữ trong database, các thành viên trong gia đình được liên kết (gắn kết) với nhau (để phân biệt với các thành viên khác trong hộ gia đình khác) bằng khóa chính là số sổ hộ khẩu. Tuy nhiên, trong thực tế, số sổ hộ khẩu thì có nhà có, có nhà không, có hộ có số sổ hộ khẩu thì chỉ đánh số cho Chủ hộ.

Cột cần đánh số tự động là cột B (Sổ hộ khẩu số)

Trường hợp 1: Nếu tất cả các thành viên trong một hộ gia đình đã được đánh số rồi thì bỏ qua (trong file excel, các hộ gia đình bắt đầu bằng chữ Chủ hộ và kết thúc trước chữ Chủ hộ tiếp theo như trong file mẫu đính kèm)

Trường hợp 2: Nếu chủ hộ đã được đánh số hộ khẩu, mà các thành viên khác trong gia đình chưa được đánh số thì copy số của Chủ hộ cho tất cả thành viên còn lại trong hộ đó. Ví dụ: dòng số 24 đã được đánh số 008374635 thì copy và paste số 008374635 cho dòng số 25 đến dòng số 31

Trường hợp 3: Nếu Chủ hộ chưa được đánh số thì form sẽ tự sinh số cho cả hộ theo format: Huyện/Thị xã/_Phường/Xã00001 cho cả hộ, Huyện/Thị xã_Phường/Xã00002 cho cả hộ tiếp theo. Ví dụ: Nhập Huyện/Thị là TrangBom, nhập Phường/xã là BinhMinh thì mã tự động là: TrangBom_BinhMinh00001 cho dòng 32 đến dòng 45, TrangBom_BinhMinh00002 cho dòng 50 đến dòng 58, TrangBom_BinhMinh00003 cho dòng 65 đến dòng 69, ...

Mình rất mong chờ sự giúp đỡ từ các thành viên vì file dữ liệu của mình rất lớn (vài chục ngàn dòng), ngồi đánh số thủ công thì mất nhiều thời gian, mà làm VBA thì mình cũng đã từng có học nhưng đã "trả lại sòng phẳng" cho thầy mất rồi, hihi
thanks.
 

File đính kèm

  • file mau xin giup 1.xlsx
    27.3 KB · Đọc: 16
Lần chỉnh sửa cuối:
Các thành viên GPE đi chơi lễ hết rồi sao vậy ta.
 
Chào các anh/chị thành viên GPE
Mấy hôm nay nhờ các anh/chị trong GPE nhiệt tình giúp đỡ mà mình đã có command button để điền tên cha mẹ tự động.
Hôm nay, mình tiếp tục nhờ các anh/chị thành viên GPE giúp mình công thức hoặc VBA tương tự như userform mình đã vẽ trong file mẫu excel gởi đính kèm.

mô tả nội dung cần giúp đỡ:

Trong một gia đình, ví dụ có 5 người gồm: Chủ hộ, Vợ, Con, Con, Cháu. Khi lưu trữ trong database, các thành viên trong gia đình được liên kết (gắn kết) với nhau (để phân biệt với các thành viên khác trong hộ gia đình khác) bằng khóa chính là số sổ hộ khẩu. Tuy nhiên, trong thực tế, số sổ hộ khẩu thì có nhà có, có nhà không, có hộ có số sổ hộ khẩu thì chỉ đánh số cho Chủ hộ.

Cột cần đánh số tự động là cột B (Sổ hộ khẩu số)

Trường hợp 1: Nếu tất cả các thành viên trong một hộ gia đình đã được đánh số rồi thì bỏ qua (trong file excel, các hộ gia đình bắt đầu bằng chữ Chủ hộ và kết thúc trước chữ Chủ hộ tiếp theo như trong file mẫu đính kèm)

Trường hợp 2: Nếu chủ hộ đã được đánh số hộ khẩu, mà các thành viên khác trong gia đình chưa được đánh số thì copy số của Chủ hộ cho tất cả thành viên còn lại trong hộ đó. Ví dụ: dòng số 24 đã được đánh số 008374635 thì copy và paste số 008374635 cho dòng số 25 đến dòng số 31

Trường hợp 3: Nếu Chủ hộ chưa được đánh số thì form sẽ tự sinh số cho cả hộ theo format: Huyện/Thị xã/_Phường/Xã00001 cho cả hộ, Huyện/Thị xã_Phường/Xã00002 cho cả hộ tiếp theo. Ví dụ: Nhập Huyện/Thị là TrangBom, nhập Phường/xã là BinhMinh thì mã tự động là: TrangBom_BinhMinh00001 cho dòng 32 đến dòng 45, TrangBom_BinhMinh00002 cho dòng 50 đến dòng 58, TrangBom_BinhMinh00003 cho dòng 65 đến dòng 69, ...

Mình rất mong chờ sự giúp đỡ từ các thành viên vì file dữ liệu của mình rất lớn (vài chục ngàn dòng), ngồi đánh số thủ công thì mất nhiều thời gian, mà làm VBA thì mình cũng đã từng có học nhưng đã "trả lại sòng phẳng" cho thầy mất rồi, hihi
thanks.
Tôi làm biếng với Form.
Bạn nhập vào ô D11: TrangBom - D12: BinhMinh
Rồi chạy thử code này, hổng trúng thì ... "tèo"
PHP:
Public Sub GPE_X()
Dim sArr(), I As Long, Tem As String, Num As Long, Ma As String
Ma = [D11].Value & "_" & [D12].Value
sArr = Range([D17], [D65536].End(xlUp)).Offset(, -2).Resize(, 4).Value
For I = 1 To UBound(sArr, 1)
    If UCase(sArr(I, 4)) Like "CH? H?" Then
        If sArr(I, 1) <> Empty Then
            Tem = sArr(I, 1)
        Else
            Num = Num + 1
            Tem = Ma & Format(Num, "00000")
        End If
    End If
    If sArr(I, 1) = Empty Then sArr(I, 1) = Tem
Next I
[B17].Resize(I - 1) = sArr
End Sub
 
Lần chỉnh sửa cuối:
anh Ba tê ơi, giúp thì giúp cho trót đi anh, hihi. hướng dẫn mình thêm tí để rõ hơn được không
Tôi làm biếng với Form.
Bạn nhập vào ô D11: TrangBom - D12: BinhMinh
Rồi chạy thử code này, hổng trúng thì ... "tèo"
PHP:
Public Sub GPE_X()
Dim sArr(), I As Long, Tem As String, Num As Long, Ma As String
Ma = [D11].Value & "_" & [D12].Value
sArr = Range([D17], [D65536].End(xlUp)).Offset(, -2).Resize(, 4).Value
For I = 1 To UBound(sArr, 1)
    If UCase(sArr(I, 4)) Like "CH? H?" Then
        If sArr(I, 1) <> Empty Then
            Tem = sArr(I, 1)
        Else
            Num = Num + 1
            Tem = Ma & Format(Num, "00000")
        End If
    End If
    If sArr(I, 1) = Empty Then sArr(I, 1) = Tem
Next I
[B17].Resize(I - 1) = sArr
End Sub
 
Web KT

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

Back
Top Bottom