Nhờ các anh chị xử lý bảng exel theo coppy theo form và có định dạng (1 người xem)

  • Thread starter Thread starter romkut3
  • Ngày gửi Ngày gửi
Liên hệ QC

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

romkut3

Thành viên hoạt động
Tham gia
9/4/13
Bài viết
109
Được thích
3
Tình hình là em có 1 bảng exel tổng, giờ muốn coppy sang 1 file exel theo form có nhiều điều kiện kèm theo mà rắc rối quá chắc phải xài vba, anh chị nào rành xử lý dùm em với, trong file cái nào làm được em đã làm rồi, còn những cái chưa làm được em gửi các anh chị xem giúp dùm với ạ, e cảm ơn anh chị!
 

File đính kèm

bác nào rành vba ghé ngang giúp em với ạ
 
Upvote 0
T ko rành VBA, nhưng đưa cho bạn công thức này. Bạn ứng dụng trước xem sao
 

File đính kèm

Upvote 0
Tình hình là em có 1 bảng exel tổng, giờ muốn coppy sang 1 file exel theo form có nhiều điều kiện kèm theo mà rắc rối quá chắc phải xài vba, anh chị nào rành xử lý dùm em với, trong file cái nào làm được em đã làm rồi, còn những cái chưa làm được em gửi các anh chị xem giúp dùm với ạ, e cảm ơn anh chị!

Góp ý cho bạn:

1/ Trước tiên giải thích từ ngữ:

- Mục là mục lục.
- Kê là kê ra các thửa đất theo từng tờ bản đồ.

Vậy mục kê có nghĩa là danh mục các thửa đất được kê ra theo trình tự từng tờ bản đồ theo từng thửa đất (quy ước là kê thửa theo thứ tự từ nhỏ đến lớn.

2/ Sheet 1 (có thể là do phần mềm xuất ra): theo tôi thì nên có cột thứ tự tổng, để theo dõi cho tốt bạn nên thêm cột đăng ký, tập hồ sơ, đợt xét duyệt, đợt cấp giấy, số giấy chứng nhận, ngày cấp. Mục đích: dùng sheet lọc bất kỳ dữ liệu theo nội dung của từng loại khi cần.

Ví dụ:
- Lọc ra danh sách cấp giấy đợt 101: thì ta được danh sách của đợt đó (có bao nhiêu hộ, cấp bao nhiêu giấy, có bao nhiêu thửa đất..v..v....)
- Dùng sheet này để tổng hợp từng loại đối tượng, diện tích loại dđất.
- Tổng hợp số thửa đã đăng ký, đã cấp bao nhiêu thửa còn lại bao nhiêu thửa chưa cấp.

3/ Sheet SMK: không nên để riêng tiêu đề từng trang, mà bạn cứ để liên tù tì như sheet1 (trong Excel có thể độ in tiêu đề cho từng trang 1).

Góp ý cho bạn vậy thôi:

Còn để quản lý tốt thì bạn nên nêu tất cả các vấn đề bạn cần (theo nhu cầu của đơn vị bạn), kể cả làm tờ trình và phiêu chuyển thông tin thuế.

- Với góp ý trên: bạn có thể sử dụng sheet1 thiên biến vạn hóa cái bạn cần.
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn bạn nhiều để mình ngâm thử
 
Upvote 0
Góp ý cho bạn:

1/ Trước tiên giải thích từ ngữ:

- Mục là mục lục.
- Kê là kê ra các thửa đất theo từng tờ bản đồ.

Vậy mục kê có nghĩa là danh mục các thửa đất được kê ra theo trình tự từng tờ bản đồ theo từng thửa đất (quy ước là kê thửa theo thứ tự từ nhỏ đến lớn.

2/ Sheet 1 (có thể là do phần mềm xuất ra): theo tôi thì nên có cột thứ tự tổng, để theo dõi cho tốt bạn nên thêm cột đăng ký, tập hồ sơ, đợt xét duyệt, đợt cấp giấy, số giấy chứng nhận, ngày cấp. Mục đích: dùng sheet lọc bất kỳ dữ liệu theo nội dung của từng loại khi cần.

Ví dụ:
- Lọc ra danh sách cấp giấy đợt 101: thì ta được danh sách của đợt đó (có bao nhiêu hộ, cấp bao nhiêu giấy, có bao nhiêu thửa đất..v..v....)
- Dùng sheet này để tổng hợp từng loại đối tượng, diện tích loại dđất.
- Tổng hợp số thửa đã đăng ký, đã cấp bao nhiêu thửa còn lại bao nhiêu thửa chưa cấp.

3/ Sheet SMK: không nên để riêng tiêu đề từng trang, mà bạn cứ để liên tù tì như sheet1 (trong Excel có thể độ in tiêu đề cho từng trang 1).

Góp ý cho bạn vậy thôi:

Còn để quản lý tốt thì bạn nên nêu tất cả các vấn đề bạn cần (theo nhu cầu của đơn vị bạn), kể cả làm tờ trình và phiêu chuyển thông tin thuế.

- Với góp ý trên: bạn có thể sử dụng sheet1 thiên biến vạn hóa cái bạn cần.
Cám ơn bạn đã chân thành góp ý, với góp ý của bạn mình trả lời như thế này.
1/ cái giải thích thì trong file exel mình đã nêu rõ là mục đích, vì cái này chuyên ngành để giải thích nhiều người hiểu hơi khó... nên mình chỉ nêu mục đích làm thôi.
2/ không biết bạn có trong nghành k nhưng theo bạn nói thì cái đó hơi thừa, cái này chỉ cần như rứa thôi...k dài dòng như bạn nghĩ.
3/ mình biết có chỗ nó cho in ra giữ nguyên tiêu đề, cơ mà cái này làm theo form như thế vì nó liên can đến quá trình in, số trang nhảy v.v. và mình muốn có ai đó viết code dùm để nghiên cứu vba thử :D cái này làm tay thì cũng đc nhưng mà với vba thì nhanh gấp mấy lần...
và nếu bạn có thể mần đc bằng vba bạn viết và giải thích hộ mình các code dùng để làm gì với nhé :D thanks bạn đã quan tâm
 
Upvote 0
T ko rành VBA, nhưng đưa cho bạn công thức này. Bạn ứng dụng trước xem sao
cám ơn bạn, mình cũng nghĩ đến cái hàm if kết hợp với vlookup mà searrch mãi k cóa cái giống vầy :D công thức bạn đưa rất hay nhưng nếu áp dụng cho nhiều mảng và nhảy cóc dòng thì chắc chỉ có vba mới mần đc với lại
*cái forrm nó chỉ có 48 dòng thôi, bạn cho số trang = tờ bản đồ chắc nhầm với ý của mình, và nếu đổi số trang như vậy nó cũng bị thiếu dòng theo tờ bản đồ
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn đã chân thành góp ý, với góp ý của bạn mình trả lời như thế này.
1/ cái giải thích thì trong file exel mình đã nêu rõ là mục đích, vì cái này chuyên ngành để giải thích nhiều người hiểu hơi khó... nên mình chỉ nêu mục đích làm thôi.
2/ không biết bạn có trong nghành k nhưng theo bạn nói thì cái đó hơi thừa, cái này chỉ cần như rứa thôi...k dài dòng như bạn nghĩ.
3/ mình biết có chỗ nó cho in ra giữ nguyên tiêu đề, cơ mà cái này làm theo form như thế vì nó liên can đến quá trình in, số trang nhảy v.v. và mình muốn có ai đó viết code dùm để nghiên cứu vba thử :D cái này làm tay thì cũng đc nhưng mà với vba thì nhanh gấp mấy lần...
và nếu bạn có thể mần đc bằng vba bạn viết và giải thích hộ mình các code dùng để làm gì với nhé :D thanks bạn đã quan tâm

Trong ngành hay không thì hạ hồi phân giải sau.

Còn tất cả mọi công việc của cơ quan bạn tôi biết đến tận ngõ ngách và có thể làm được tất tần tật mọi thứ như góp ý ở bài #4 (tin hay không là tùy bạn).

File này tôi giúp cho 1 thành viên trên diễn đàn, nó chỉ là 1 phần trong nội dung tôi đã góp ý.
 

File đính kèm

Upvote 0
cám ơn bạn, mình cũng nghĩ đến cái hàm if kết hợp với vlookup mà searrch mãi k cóa cái giống vầy :D công thức bạn đưa rất hay nhưng nếu áp dụng cho nhiều mảng và nhảy cóc dòng thì chắc chỉ có vba mới mần đc với lại
*cái forrm nó chỉ có 48 dòng thôi, bạn cho số trang = tờ bản đồ chắc nhầm với ý của mình, và nếu đổi số trang như vậy nó cũng bị thiếu dòng theo tờ bản đồ
Tôi đã xem lại. Xin xóa bài này
 
Lần chỉnh sửa cuối:
Upvote 0
Trong ngành hay không thì hạ hồi phân giải sau.

Còn tất cả mọi công việc của cơ quan bạn tôi biết đến tận ngõ ngách và có thể làm được tất tần tật mọi thứ như góp ý ở bài #4 (tin hay không là tùy bạn).

File này tôi giúp cho 1 thành viên trên diễn đàn, nó chỉ là 1 phần trong nội dung tôi đã góp ý.
thanks bạn, cái bạn gửi là dùng để quản lý, còn cái của mình cần là cấp 1 danh sách tổng để giao nộp cho người quản lý đó :D nếu bạn giúp đc mình theo nội dung mình gửi ở #1 thì cái của bạn mình sẻ là bước tiếp theo
 
Upvote 0
thanks bạn, cái bạn gửi là dùng để quản lý, còn cái của mình cần là cấp 1 danh sách tổng để giao nộp cho người quản lý đó :D nếu bạn giúp đc mình theo nội dung mình gửi ở #1 thì cái của bạn mình sẻ là bước tiếp theo

Ý của bạn là muốn in trang sổ mục kê theo từng tờ bản đồ:

Nghĩa là:

- In hết tờ bản đồ số 1 rồi sang trang và in tiếp tờ bản đồ số 2 (hết tờ bản đồ số 2 thì sang trang), tương tự như vậy tiếp tục in các tờ bản đồ khác.

- Điều kiện: mỗi trang in đều có tiêu đề và số trang in được đánh số liên tục từ 1 đến số cuối cùng.

Bạn giải thích không rõ ràng nên chẳng thành viên nào hiểu hết.

Theo tôi nhận định thì bạn muốn làm cái này để nộp thành quả đo đạc.
 
Upvote 0
Ý của bạn là muốn in trang sổ mục kê theo từng tờ bản đồ:

Nghĩa là:

- In hết tờ bản đồ số 1 rồi sang trang và in tiếp tờ bản đồ số 2 (hết tờ bản đồ số 2 thì sang trang), tương tự như vậy tiếp tục in các tờ bản đồ khác.

- Điều kiện: mỗi trang in đều có tiêu đề và số trang in được đánh số liên tục từ 1 đến số cuối cùng.

Bạn giải thích không rõ ràng nên chẳng thành viên nào hiểu hết.

Theo tôi nhận định thì bạn muốn làm cái này để nộp thành quả đo đạc.
Đúng rồi đó bạn, chắc có lẽ mình k nói rõ ở mục trang in, do cái form mình kẻ sẵn ra rồi, mình mặc định form luôn. Khj thực hiện vba thì nó sẻ tự động coppy theo tờ bản đò cho đến hết, ví dụ tờ bđ 1 có 63 thửa nhưng cái forrm có 48dòng nên nó sẻ nhảy sang trang 2 và bắt đầu từ thửa số 49. Kết thúc tờ 1 nó sẻ nhảy sang tờ bđ số 2 với trang 3... trong sheet smk mình làm mẫu rồi chắc k rõ ràng lắm nên mọi nhười k hỉu ý hì hì..
 
Upvote 0
Đúng rồi đó bạn, chắc có lẽ mình k nói rõ ở mục trang in, do cái form mình kẻ sẵn ra rồi, mình mặc định form luôn. Khj thực hiện vba thì nó sẻ tự động coppy theo tờ bản đò cho đến hết, ví dụ tờ bđ 1 có 63 thửa nhưng cái forrm có 48dòng nên nó sẻ nhảy sang trang 2 và bắt đầu từ thửa số 49. Kết thúc tờ 1 nó sẻ nhảy sang tờ bđ số 2 với trang 3... trong sheet smk mình làm mẫu rồi chắc k rõ ràng lắm nên mọi nhười k hỉu ý hì hì..

Bạn cho mình hỏi là dữ liệu ở sheet1 có sort theo cột A không? hay là phải giữ nguyên.
và ở sheet1 đó bạn có viết thêm công thức vào nữa không?
Code sẽ dễ dàng hơn nếu được sort và không có công thức gì thêm.
 
Upvote 0
Bạn cho mình hỏi là dữ liệu ở sheet1 có sort theo cột A không? hay là phải giữ nguyên.
và ở sheet1 đó bạn có viết thêm công thức vào nữa không?
Code sẽ dễ dàng hơn nếu được sort và không có công thức gì thêm.
ở sheet1 là dữ liệu nguyên zin của nó bạn ơi. nếu đúng ra là sort theo tờ bản đồ đó là bạn
 
Upvote 0
ở sheet1 là dữ liệu nguyên zin của nó bạn ơi. nếu đúng ra là sort theo tờ bản đồ đó là bạn
Mình thấy dữ liệu ở dòng 442 có sô tờ bản đồ là 1 nằm giữa các tờ bản đồ số 5
Ý muốn hỏi là số tờ đó là ghi nhầm ?
Và nếu không phải ghi nhầm thì có thể sort để đưa nó về cùng với nhóm số 1 được không ?
P/s Bài thì đã làm rồi, nhưng theo cách mình hiểu, vì vậy cần hỏi cho rõ trước khi đưa bài lên.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thấy dữ liệu ở dòng 442 có sô tờ bản đồ là 1 nằm giữa các tờ bản đồ số 5
Ý muốn hỏi là số tờ đó là ghi nhầm ?
Và nếu không phải ghi nhầm thì có thể sort để đưa nó về cùng với nhóm số 1 được không ?
P/s Bài thì đã làm rồi, nhưng theo cách mình hiểu, vì vậy cần hỏi cho rõ trước khi đưa bài lên.
được bạn ạ, chắc tại do lúc xuất ra nó bị lỗi... nếu đc bạn viết cho từng nút làm từng 1 hạng mục ví dụ sort sheet1 theo tờ bản đồ rồi nút thứ 2 mới xuất ra smk được k?
 
Upvote 0
được bạn ạ, chắc tại do lúc xuất ra nó bị lỗi... nếu đc bạn viết cho từng nút làm từng 1 hạng mục ví dụ sort sheet1 theo tờ bản đồ rồi nút thứ 2 mới xuất ra smk được k?

Hỏi thấy lâu lâu không trả lời, tưởng bạn bỏ bài này rồi.
Xem trên sheet "SMK-2" nhé!
 

File đính kèm

Upvote 0
Hỏi thấy lâu lâu không trả lời, tưởng bạn bỏ bài này rồi.
Xem trên sheet "SMK-2" nhé!
mình đã xem rồi và trúng ý mình, nhưng vừa rồi mình có thay đổi số cột và cố chỉnh lại trong code của bạn nhưng vẫn k đc, vì k hiểu lắm... mình đã nêu trong file đính kèm, bạn xem và giúp dùm mình với nhé, thank bạn nhiều nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
mình đã xem rồi và trúng ý mình, nhưng vừa rồi mình có thay đổi số cột và cố chỉnh lại trong code của bạn nhưng vẫn k đc, vì k hiểu lắm... mình đã nêu trong file đính kèm, bạn xem và giúp dùm mình với nhé, thank bạn nhiều nhiều

Ấy ấy thêm nhiều sheet hỏi quá!
Mình là thành viên lười biếng mà.
Sửa lại code cho đúng với thứ tự cột đã thay đổi thôi nhé!
còn các sheet khác (trích lọc, tổng hợp) thì để người khác giúp nhé!

Trong file bạn có hỏi
Set FMau = Sheet5.Range... thì sheet5 là sheet nào?
Mình đưa ảnh lên để bạn hiểu:
sheet5.jpg
 

File đính kèm

Upvote 0
Ấy ấy thêm nhiều sheet hỏi quá!
Mình là thành viên lười biếng mà.
Sửa lại code cho đúng với thứ tự cột đã thay đổi thôi nhé!
còn các sheet khác (trích lọc, tổng hợp) thì để người khác giúp nhé!

Trong file bạn có hỏi

Mình đưa ảnh lên để bạn hiểu:
View attachment 160006
Thaks bạn quan tâm rất nhiều, bạn có thể làm giúp mình 1 cái pl16 thôi đc k? Do cái đó mình nghĩ chỉ vba làm đc chứ công thức chắc k đc... còn mấy cái khác mình sẻ cố làm thử... rất mong đc sự quan tâm của bạn
 
Upvote 0
Thaks bạn quan tâm rất nhiều, bạn có thể làm giúp mình 1 cái pl16 thôi đc k? Do cái đó mình nghĩ chỉ vba làm đc chứ công thức chắc k đc... còn mấy cái khác mình sẻ cố làm thử... rất mong đc sự quan tâm của bạn
Thứ 2 (6/6) mình làm nhé.
 
Upvote 0
ok bạn mình chờ được -\\/.
Như đã hứa với bạn
PHP:
Sub PL16()
Dim d As Object
Dim data, tam
Dim i As Long, k As Long, j As Long
Dim sothua As String, ma As String
Set d = CreateObject("scripting.Dictionary")
data = Sheet1.Range("A2:R" & Sheet1.Range("A65536").End(xlUp).Row)
ReDim tam(1 To UBound(data), 1 To 7)
d.CompareMode = vbTextCompare
   For i = 1 To UBound(data)
       ma = data(i, 2) & data(i, 14)
       If sothua <> data(i, 14) Then
        d.RemoveAll
            k = k + 1
             sothua = data(i, 14)
             tam(k, 1) = k
             tam(k, 2) = data(i, 14)
                If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                    Else
                    
                End If
           tam(k, 3) = tam(k, 3) + 1
           tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
           tam(k, 6) = tam(k, 6) + data(i, 6)
           
          Else
               If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                   
                End If
            tam(k, 3) = tam(k, 3) + 1
            tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
            tam(k, 6) = tam(k, 6) + data(i, 6)
       End If
  Next
    
 For j = 1 To k
    tam(k + 1, 1) = "Tông"
    tam(k + 1, 2) = tam(k + 1, 2) + 1
    tam(k + 1, 3) = tam(k + 1, 3) + tam(j, 3)
    tam(k + 1, 4) = tam(k + 1, 4) + tam(j, 4)
    tam(k + 1, 5) = tam(k + 1, 5) + tam(j, 5)
    tam(k + 1, 6) = tam(k + 1, 6) + tam(j, 6)
Next
 Range("A7").Resize(10000, 7).Clear
 Range("A7").Resize(k + 1, 7) = tam
 Range("A7").Resize(k + 1, 7).Borders.ColorIndex = 1
 End Sub
 
Upvote 0
Như đã hứa với bạn
PHP:
Sub PL16()
Dim d As Object
Dim data, tam
Dim i As Long, k As Long, j As Long
Dim sothua As String, ma As String
Set d = CreateObject("scripting.Dictionary")
data = Sheet1.Range("A2:R" & Sheet1.Range("A65536").End(xlUp).Row)
ReDim tam(1 To UBound(data), 1 To 7)
d.CompareMode = vbTextCompare
   For i = 1 To UBound(data)
       ma = data(i, 2) & data(i, 14)
       If sothua <> data(i, 14) Then
        d.RemoveAll
            k = k + 1
             sothua = data(i, 14)
             tam(k, 1) = k
             tam(k, 2) = data(i, 14)
                If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                    Else
                    
                End If
           tam(k, 3) = tam(k, 3) + 1
           tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
           tam(k, 6) = tam(k, 6) + data(i, 6)
           
          Else
               If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                   
                End If
            tam(k, 3) = tam(k, 3) + 1
            tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
            tam(k, 6) = tam(k, 6) + data(i, 6)
       End If
  Next
    
 For j = 1 To k
    tam(k + 1, 1) = "Tông"
    tam(k + 1, 2) = tam(k + 1, 2) + 1
    tam(k + 1, 3) = tam(k + 1, 3) + tam(j, 3)
    tam(k + 1, 4) = tam(k + 1, 4) + tam(j, 4)
    tam(k + 1, 5) = tam(k + 1, 5) + tam(j, 5)
    tam(k + 1, 6) = tam(k + 1, 6) + tam(j, 6)
Next
 Range("A7").Resize(10000, 7).Clear
 Range("A7").Resize(k + 1, 7) = tam
 Range("A7").Resize(k + 1, 7).Borders.ColorIndex = 1
 End Sub
Thans bạn, mình k coá laptop tí mình ol test. Thử.
 
Upvote 0
Như đã hứa với bạn
PHP:
Sub PL16()
Dim d As Object
Dim data, tam
Dim i As Long, k As Long, j As Long
Dim sothua As String, ma As String
Set d = CreateObject("scripting.Dictionary")
data = Sheet1.Range("A2:R" & Sheet1.Range("A65536").End(xlUp).Row)
ReDim tam(1 To UBound(data), 1 To 7)
d.CompareMode = vbTextCompare
   For i = 1 To UBound(data)
       ma = data(i, 2) & data(i, 14)
       If sothua <> data(i, 14) Then
        d.RemoveAll
            k = k + 1
             sothua = data(i, 14)
             tam(k, 1) = k
             tam(k, 2) = data(i, 14)
                If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                    Else
                    
                End If
           tam(k, 3) = tam(k, 3) + 1
           tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
           tam(k, 6) = tam(k, 6) + data(i, 6)
           
          Else
               If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                   
                End If
            tam(k, 3) = tam(k, 3) + 1
            tam(k, 5) = tam(k, 5) + IIf(data(i, 13) <> 1, 1, 0)
            tam(k, 6) = tam(k, 6) + data(i, 6)
       End If
  Next
    
 For j = 1 To k
    tam(k + 1, 1) = "Tông"
    tam(k + 1, 2) = tam(k + 1, 2) + 1
    tam(k + 1, 3) = tam(k + 1, 3) + tam(j, 3)
    tam(k + 1, 4) = tam(k + 1, 4) + tam(j, 4)
    tam(k + 1, 5) = tam(k + 1, 5) + tam(j, 5)
    tam(k + 1, 6) = tam(k + 1, 6) + tam(j, 6)
Next
 Range("A7").Resize(10000, 7).Clear
 Range("A7").Resize(k + 1, 7) = tam
 Range("A7").Resize(k + 1, 7).Borders.ColorIndex = 1
 End Sub
CODE ĐÓ ĐÚNG RỒI. bạn chỉnh dùm mình cột tổng số chủ quản lý chỉ tính cho mã lớn hơn 1 và lọc trùng số chủ quản lý đó, ví dụ tờ 1 có 3 chủ qunar lý 11 và 1 quản lý là 6 thì tính là 2, bỏ các chủ quản lý là 1( gDC),... thank bạn. chỗ cái code <> 1,1,0 mình thử điều chỉnh nó vẫn k ra và k có cái code lọc trùng nên k đúng như mong muốn...
 
Upvote 0
CODE ĐÓ ĐÚNG RỒI. bạn chỉnh dùm mình cột tổng số chủ quản lý chỉ tính cho mã lớn hơn 1 và lọc trùng số chủ quản lý đó, ví dụ tờ 1 có 3 chủ qunar lý 11 và 1 quản lý là 6 thì tính là 2, bỏ các chủ quản lý là 1( gDC),... thank bạn. chỗ cái code <> 1,1,0 mình thử điều chỉnh nó vẫn k ra và k có cái code lọc trùng nên k đúng như mong muốn...

Mấy ngày rồi, không nhớ mình làm thế nào nữa, xem mãi mới nhớ lại đôi chút
Sửa thế này không biết có đúng không.
PHP:
Sub PL16()
Dim d As Object, d2 As Object
Dim data, tam
Dim i As Long, k As Long, j As Long
Dim sothua As String, ma As String
Set d = CreateObject("scripting.Dictionary")
Set d2 = CreateObject("scripting.Dictionary")
data = Sheet1.Range("A2:R" & Sheet1.Range("A65536").End(xlUp).Row)
ReDim tam(1 To UBound(data), 1 To 7)
d.CompareMode = vbTextCompare
   For i = 1 To UBound(data)
       ma = data(i, 2) & data(i, 14)
       If sothua <> data(i, 14) Then
        d.RemoveAll
        d2.RemoveAll
            k = k + 1
             sothua = data(i, 14)
             tam(k, 1) = k
             tam(k, 2) = data(i, 14)
             tam(k, 3) = tam(k, 3) + 1
             tam(k, 6) = tam(k, 6) + data(i, 6)
                If data(i, 13) <> 1 Then
                   If Not d2.exists(data(i, 13)) Then
                       d2.Add data(i, 13), ""
                       tam(k, 5) = tam(k, 5) + 1
                   End If
                End If
                If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                End If
          Else
               If data(i, 13) <> 1 Then
                   If Not d2.exists(data(i, 13)) Then
                       d2.Add data(i, 13), ""
                       tam(k, 5) = tam(k, 5) + 1
                   End If
                End If
               If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                End If
            tam(k, 3) = tam(k, 3) + 1
            tam(k, 6) = tam(k, 6) + data(i, 6)
       End If
  Next
 For j = 1 To k
    tam(k + 1, 1) = Sheet5.[n4]
    tam(k + 1, 2) = tam(k + 1, 2) + 1
    tam(k + 1, 3) = tam(k + 1, 3) + tam(j, 3)
    tam(k + 1, 4) = tam(k + 1, 4) + tam(j, 4)
    tam(k + 1, 5) = tam(k + 1, 5) + tam(j, 5)
    tam(k + 1, 6) = tam(k + 1, 6) + tam(j, 6)
Next
 Range("A7").Resize(10000, 7).Clear
 Range("A7").Resize(k + 1, 7) = tam
 Range("A7").Resize(k + 1, 7).Borders.ColorIndex = 1
 End Sub
 
Upvote 0
Mấy ngày rồi, không nhớ mình làm thế nào nữa, xem mãi mới nhớ lại đôi chút
Sửa thế này không biết có đúng không.
PHP:
Sub PL16()
Dim d As Object, d2 As Object
Dim data, tam
Dim i As Long, k As Long, j As Long
Dim sothua As String, ma As String
Set d = CreateObject("scripting.Dictionary")
Set d2 = CreateObject("scripting.Dictionary")
data = Sheet1.Range("A2:R" & Sheet1.Range("A65536").End(xlUp).Row)
ReDim tam(1 To UBound(data), 1 To 7)
d.CompareMode = vbTextCompare
   For i = 1 To UBound(data)
       ma = data(i, 2) & data(i, 14)
       If sothua <> data(i, 14) Then
        d.RemoveAll
        d2.RemoveAll
            k = k + 1
             sothua = data(i, 14)
             tam(k, 1) = k
             tam(k, 2) = data(i, 14)
             tam(k, 3) = tam(k, 3) + 1
             tam(k, 6) = tam(k, 6) + data(i, 6)
                If data(i, 13) <> 1 Then
                   If Not d2.exists(data(i, 13)) Then
                       d2.Add data(i, 13), ""
                       tam(k, 5) = tam(k, 5) + 1
                   End If
                End If
                If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                End If
          Else
               If data(i, 13) <> 1 Then
                   If Not d2.exists(data(i, 13)) Then
                       d2.Add data(i, 13), ""
                       tam(k, 5) = tam(k, 5) + 1
                   End If
                End If
               If Not d.exists(ma) Then
                    d.Add ma, ""
                    tam(k, 4) = tam(k, 4) + 1
                End If
            tam(k, 3) = tam(k, 3) + 1
            tam(k, 6) = tam(k, 6) + data(i, 6)
       End If
  Next
 For j = 1 To k
    tam(k + 1, 1) = Sheet5.[n4]
    tam(k + 1, 2) = tam(k + 1, 2) + 1
    tam(k + 1, 3) = tam(k + 1, 3) + tam(j, 3)
    tam(k + 1, 4) = tam(k + 1, 4) + tam(j, 4)
    tam(k + 1, 5) = tam(k + 1, 5) + tam(j, 5)
    tam(k + 1, 6) = tam(k + 1, 6) + tam(j, 6)
Next
 Range("A7").Resize(10000, 7).Clear
 Range("A7").Resize(k + 1, 7) = tam
 Range("A7").Resize(k + 1, 7).Borders.ColorIndex = 1
 End Sub
bạn thật vi dịu.. đúng rầu thank bạn nhiều nhé
 
Upvote 0

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

Back
Top Bottom