chisinhvnn
Thành viên tiêu biểu
- Tham gia
- 7/3/08
- Bài viết
- 479
- Được thích
- 104
Lấy họ tên dài lằng ngoằng thế kia làm khóa duy nhất để tổng hợp thì hỏng bét. Gõ sai 1 chút: "Bà Trần Thị Hia" với "Bà Trần Thị Hia" hoặc "Bà Trần Thị Hia " thì chắc chắn bị hiểu là 3 bà.Kính nhờ anh chị viết gúp đoạn code:
Lọc ra từng đối tượng, sau đó tính tổng diện tích của đối tượng; (các thửa đất được gom lại 1 hàng theo tờ bản đồ và tính tổng diện tích theo tờ bản đồ của từng đối tượng). Anh chị xem file giúp. Xin cảm ơn
Dữ liệu thật cũng đang bị như thế anh ạ.Lấy họ tên dài lằng ngoằng thế kia làm khóa duy nhất để tổng hợp thì hỏng bét. Gõ sai 1 chút: "Bà Trần Thị Hia" với "Bà Trần Thị Hia" hoặc "Bà Trần Thị Hia " thì chắc chắn bị hiểu là 3 bà.
Biết đâu lại được thành 3 thửa đất anh à.chắc chắn bị hiểu là 3 bà.
Cái này chắc địa chính địa phương họ quản lý theo mã hộ hay theo tên như thế này nhỉỜ nhỉ, tôi nói đại như thế mà hóa ra có 2 bà Trần Thị Hia thiệt
Mấy bà này liên quan đến đất đai kiểu này dễ kéo nhau ra tòa lắm.Ờ nhỉ, tôi nói đại như thế mà hóa ra có 2 bà Trần Thị Hia thiệt
Không khéo là số liệu ảo.Cái này chắc địa chính địa phương họ quản lý theo mã hộ hay theo tên như thế này nhỉ
Họ cứ theo suy nghĩ thông thường mà nhập liệu thôi. Có tên thì gõ tên, có số tờ số thửa, diện tích thì gõ vào. Đến hồi sai không biết sai chỗ nào.Cái này chắc địa chính địa phương họ quản lý theo mã hộ hay theo tên như thế này nhỉ
Số liệu đưa lên đây tất nhiên không phải thật rồi, nhưng trên thực tế họ nhập liệu như tôi đã nói thì tất yếu xảy ra sai sót như thế thôi.Không khéo là số liệu ảo.
"Mấy bà này liên quan đến đất đai kiểu này dễ kéo nhau ra tòa lắm." Việc kéo nhau ra tòa thì không liên quan gì ở đây.Mấy bà này liên quan đến đất đai kiểu này dễ kéo nhau ra tòa lắm.
Không khéo là số liệu ảo.
Cảm ơn anh đã xem bài và đưa ra cách giải quyết. Nhưng chưa đúng kết quả em mong muốn. Cảm ơn anhNhờ viết code dễ quá rồi riết bà con mần biếng, chỉ biết vòi code. không chịu học hỏi tìm hiểu thêm gì về Excel.
Cái này là nhiệm vụ của Pivot Table.
(Dựng xong là thấy có dữ liệu lủng củng liền. Chỉ việc chỉnh và refresh)
View attachment 294070
=TEXTJOIN(";",1,FILTER(Sheet2!$C$6:$C$28,(Sheet2!$B$6:$B$28=$A7)*(Sheet2!$D$6:$D$28=$B7),""))
Mấy việc này có liên quan gì đến chủ đề của topic và box chuyên môn này không vậy Lão tiền bối?Mấy bà này liên quan đến đất đai kiểu này dễ kéo nhau ra tòa lắm.
Không khéo là số liệu ảo.
Cảm ơn anh. Mình dùng excel 2016, nên chắc không áp dụng công thức trên được.Ối giàn thiên lý ơi, box này là box lập trình với Excel hay là box dành cho các bô lão vào tám chuyện vậy? Người ta hỏi không trả lời thì thôi, đi bắt mấy chuyện tào lao quá vậy các bô lão.
@chisinhvnn cho bần lão hỏi, các hạ đang dùng excel phiên bản gì, Excel 365 hay phiên bản nào? Nếu dùng Excel 365 thì chỉ cần kết hợp Pivotable + hàm TEXTJOIN + FILTER, không cần viết code.
Kiểm tra lạiKính nhờ anh chị viết gúp đoạn code:
Lọc ra từng đối tượng, sau đó tính tổng diện tích của đối tượng; (các thửa đất được gom lại 1 hàng theo tờ bản đồ và tính tổng diện tích theo tờ bản đồ của từng đối tượng). Anh chị xem file giúp. Xin cảm ơn
Sub XYZ()
Dim arr(), a, b(), res(), dic As Object
Dim sRow&, sCol&, i&, SoHo&, k&, ik&, t&, j&, key$, tong#
Set dic = CreateObject("scripting.dictionary")
dic.CompareMode = 1
arr = Range("B6", Range("E" & Rows.Count).End(xlUp)).Value
sRow = UBound(arr)
LamLai:
SoHo = 0: k = 0
dic.RemoveAll
sCol = sCol + 10 'Mot ho co nhieu nhat 10 Thua
ReDim b(1 To sRow, -1 To sCol)
ReDim res(1 To sRow * 2 + 1, 1 To 5)
For i = 1 To sRow
key = Trim(arr(i, 1))'Loai Khoang Trang
If dic.exists(key) = False Then
SoHo = SoHo + 1
dic.Add key, SoHo
b(SoHo, -1) = key
End If
t = dic(key)
key = key & "|" & arr(i, 3)
If dic.exists(key) = False Then
b(t, 0) = b(t, 0) + 1
If b(t, 0) > sCol Then GoTo LamLai 'Mot ho co nhieu hon sCol Thua
dic.Add key, Array(arr(i, 2), arr(i, 4))
b(t, b(t, 0)) = key
Else
a = dic(key)
a(0) = a(0) & ";" & arr(i, 2)
a(1) = a(1) + arr(i, 4)
dic(key) = a
End If
Next i
For i = 1 To SoHo
k = k + 1
res(k, 1) = i
res(k, 2) = b(i, -1)
ik = k
For j = 1 To sCol
If b(i, j) = Empty Then Exit For
k = k + 1
res(k, 3) = dic(b(i, j))(0)
res(k, 4) = Split(b(i, j), "|")(1)
res(k, 5) = dic(b(i, j))(1)
res(ik, 5) = res(ik, 5) + res(k, 5)
Next j
tong = tong + res(ik, 5)
Next i
i = Range("K" & Rows.Count).End(xlUp).Row
If i > 5 Then Range("G6:K" & i).ClearContents
If k Then
k = k + 1
res(k, 5) = tong
Range("G6").Resize(k, 5) = res
End If '
End Sub
Cùng lưu ý này và thêm một cách khác tham khảoLưu ý: Bà Trần Thị Hia trước sau lệch 1 khoảng trắng
Sub ABC()
Dim D As Object, a(), b(), i&, Key, k&, r&, n&, Tam$, S, S1, sKey
Set D = CreateObject("scripting.dictionary")
With Sheets("Sheet2")
a = .Range("A6:E" & .Range("B" & Rows.Count).End(3).Row).Value
For i = 1 To UBound(a)
Key = Trim(a(i, 2))
If InStr(1, D.Item(Key), a(i, 4)) = 0 Then
D(Key) = D(Key) & "*" & a(i, 4)
End If
Key = Trim(a(i, 2)) & "#" & a(i, 4)
D(Key) = D(Key) & "|" & i
Next
End With
ReDim b(1 To UBound(a) * 2, 1 To 5)
For Each Key In D.keys
If InStr(1, Key, "#") = 0 Then
k = k + 1: n = n + 1
S = Split(D.Item(Key), "*")
b(k, 1) = n
b(k, 2) = Key
For i = 1 To UBound(S)
sKey = Key & "#" & S(i)
S1 = Split(D.Item(sKey), "|")
k = k + 1
For r = 1 To UBound(S1)
If Len(Tam) > 0 Then Tam = Tam & ";" & a(S1(r), 3) Else Tam = a(S1(r), 3)
b(k, 4) = S(i)
b(k, 5) = b(k, 5) + a(S1(r), 5)
Next
b(k, 3) = Tam
Tam = Empty
Next
End If
Next
With Sheets("sheet2")
.Range("G6").Resize(1000, 5).ClearContents
.Range("G6").Resize(k, 5).Value = b
End With
End Sub
Cảm ơn anh đã đưa ra lời giải để tham khảo thêm.Cùng lưu ý này và thêm một cách khác tham khảo
Cảm ơn anh đã xem và giúp đỡKiểm tra lại
Họ tên | Số thửa | DIEN_TICH | So_To |
Bà Phạm Thị Lan và ông Trần Minh Tùng | 5 | 2,207 | 112 |
Bà Trần Thị Hia | 1 | 1,043 | 93 |
Bà Trần Thị Hia | 2 | 429 | 149 |
Bà Trần Thị Thí | 5 | 4,394 | 145 |
Ông Trần Xuân Uẩn và bà Trần Thị Bông | 1 | 11,372 | 81;34 |
Ông Trần Xuân Uẩn và bà Trần Thị Bông | 2 | 7,503 | 242;127;197;208;209;217 |
Ông Trần Xuân Uẩn và bà Trần Thị Bông | 4 | 8,656 | 25;71;152;170 |
Ông Trần Xuân Uẩn và bà Trần Thị Bông | 5 | 11,714 | 14;18;19;16;10;2;22 |