Mình có danh sách của các hộ gia đình. Mỗi 1 hộ gia đình có một mã số. Số thành viên trong 1 hộ không cố định (mỗi thành viên trên 1 dòng).
Vậy làm thế nào lấy ra đầy đủ danh sách hộ gia đình đó theo mã số. Mình gửi kèm file mẫu.
Mong được các bạn giúp đỡ.
Mình có danh sách của các hộ gia đình. Mỗi 1 hộ gia đình có một mã số. Số thành viên trong 1 hộ không cố định (mỗi thành viên trên 1 dòng).
Vậy làm thế nào lấy ra đầy đủ danh sách hộ gia đình đó theo mã số. Mình gửi kèm file mẫu.
Mong được các bạn giúp đỡ.
=IF(SMALL(IF(OFFSET(B$2,MATCH($H$2,$A$3:$A$64,),,1000,)="",ROW(OFFSET(B$2,MATCH($H$2,$A$3:$A$64,),,1000,)),""),1)-MATCH($H$2,$A$1:$A$64,)>=ROW(1:1),OFFSET(B$1,MATCH($H$2,$A$3:$A$64,)+ROW(1:1),),"")
bạn thử cách này xem, mình có thêm 2 cột (A,B) trước bảng danh sách, nếu bạn không thích có thể hide đi
bạn lại thêm một mớ cột -> mỗi lần cập nhật là kéo công thức ở cột A, B đó xuống à?Danh sách gốc không được thêm các cột, chỉ được thêm dòng khi có thêm người
Tác giả yêu cầu:
bạn lại thêm một mớ cột -> mỗi lần cập nhật là kéo công thức ở cột A, B đó xuống à?
=> Chi phức tạp vậy ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iR As Long
If Target.Address = "$H$2" Then
Range("I3:K18").Clear
iR = WorksheetFunction.Match(Range("H2"), Range("A3:A65000")) + 3
With Range("A" & iR).CurrentRegion
If iR = 4 Then
.Offset(1, 1).Resize(, 3).Copy Range("I3")
ElseIf iR > 4 Then
.Offset(, 1).Resize(, 3).Copy Range("I3")
End If
End With
End If
End Sub
nếu các hộ đều cách nhau 1 dòng trống thì cái này là đủtại i3 bạn dùng chỉ 1 công thức sau:
kết thúc với ctrl+shift+enterPHP:=if(small(if(offset(b$2,match($h$2,$a$3:$a$64,),,1000,)="",row(offset(b$2,match($h$2,$a$3:$a$64,),,1000,)),""),1)-match($h$2,$a$1:$a$64,)>=row(1:1),offset(b$1,match($h$2,$a$3:$a$64,)+row(1:1),),"")
tham khảo thêm file kèm
p/s: Hoặc có thể đặt vài name cho gọn
tác giả yêu cầu:
Bạn lại thêm một mớ cột -> mỗi lần cập nhật là kéo công thức ở cột a, b đó xuống à?
=> của tôi cũng phức tạp rồi, của bạn càng rối hơn, nhờ cao thủ rút gọn giùm !
=if(i2=0,0,hlookup(i$2,$b$2:$d$66,match($h$2,$a$2:$a$64,0)+rows(h$2:h3)-2,0))
Gia nhập GPE chỉ 1 năm mà bây giờ Thương tiến bộ thần tốc thật ---> Quá là bước tiến bộ kỳ diệu... Chúc mừng nha!nếu các hộ đều cách nhau 1 dòng trống thì cái này là đủ
PHP:=if(i2=0,0,hlookup(i$2,$b$2:$d$66,match($h$2,$a$2:$a$64,0)+rows(h$2:h3)-2,0))
cái này là nhờ những cái hàm ma thuật mà ndu+dat_butmuc tranh luận với nhau từ đó mà rút ra đấy thôigia nhập gpe chỉ 1 năm mà bây giờ thương tiến bộ thần tốc thật ---> quá là bước tiến bộ kỳ diệu... Chúc mừng nha!
Công thức của Duy Thương là tuyệt rồi. Nhưng nếu dùng cột phụ thì chỉ cần 1 cột mà thôi.
Cụ thể trong file của LucVan, không cần cột phụ A, chỉ cần cột phụ B, khỏi small cho rắc rối cuộc đời.
Dĩ nhiên dùng cột phụ sẽ yêu cầu phủ kín cột Mã hộ. Nhưng phủ kín thế mới đúng theo quy tắc tạo lập cơ sở dữ liệu. Ra báo cáo trình bày thế nào thì tuỳ, chứ cơ sở dữ liệu yêu cầu phải chuẩn.
Do đó, không cần dòng trắng xen kẽ.
=IF(COUNTIF($B$3:$B$1000,$H$2)>=ROW(1:1),OFFSET(C$2,MATCH($H$2,$B$3:$B$1000,)+ROW(1:1)-1,),"")
Nếu mà phủ hết cột Mã thì dùng 1 công thức này cũng được này Bác?
Không dùng cột phụ A & công thức tại cột H.
PHP:=IF(COUNTIF($B$3:$B$1000,$H$2)>=ROW(1:1),OFFSET(C$2,MATCH($H$2,$B$3:$B$1000,)+ROW(1:1)-1,),"")
Việc dùng VBA của bạn Minh Cong cũng gọn nhẹ nhưng cũng khó tùy biến hơn dùng công thức.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = [B][COLOR="red"]"$H$2" [/COLOR][/B]Then
Target(2, 2).Resize(20, 3).Clear
With Cells.Find(Target, , , 1, 2).Resize(20).SpecialCells(4)
.Areas(1).Offset(-1, 1).Resize(, 3).Copy Target(2, 2)
End With
End If
End Sub
Nếu mã phủ hết cột và tác giả chính là Le duy thuong thì không cần dùng công thức mà dùng cái chiêu PIVIOT của lão chết tiệt HƯỚNG DẪN là số 1 , cái nài còn nhanh hơn code VBAÀ, công thức với cột phụ ở bài trên, còn dùng trong trường hợp dữ liệu không được sort theo mã hộ cơ. Năm xưa mình dùng cách này để lọc lấy sổ cái TK trong 1 rừng dữ liệu nhập theo ngày, không sort theo số hiệu TK.
Nếu mã phủ hết cột và tác giả chính là Le duy thuong thì không cần dùng công thức mà dùng cái chiêu PIVIOT của lão chết tiệt HƯỚNG DẪN là số 1 , cái nài còn nhanh hơn code VBA