Các bác chỉnh dùm em lại cái công thức này ạ!

Liên hệ QC

phamphuongthuy

Thành viên mới
Tham gia
2/8/07
Bài viết
23
Được thích
2
Các bác xem hộ em công thức ở cột AB nhé. Thank các bác ạ!
 

File đính kèm

Từ K9 đến K32 có dữ liệu, dữ liệu này nhìn thì trống nhưng do công thức mà thành, nên CountA(K3:K32)=30 chứ không phải 6 như bạn tưởng. Xoá K9:K32 thì OK.
Nếu không muốn xoá thì thay thế countA() bằng Countif(<>"")
 
Từ K9 đến K32 có dữ liệu, dữ liệu này nhìn thì trống nhưng do công thức mà thành, nên CountA(K3:K32)=30 chứ không phải 6 như bạn tưởng. Xoá K9:K32 thì OK.
Nếu không muốn xoá thì thay thế countA() bằng Countif(<>"")
Em vẫn chưa hiểu ý bác ạ, bác có thể nói rõ hơn cho em được k?
"Các bác" xem xong cũng ko hiểu nốt nên không chỉnh được !!! May ra có thêm vài ý nữa mới hiểu. Nhìn như bảng tuần hoàn Mendeleyev ý. hu hu !
Dạ, thưa bác, ý em muốn để từng đối tượng của từng khu vực riêng ra, sau đó có một bảng tổng hợp để tổng hợp tất cả những đối tượng của từng khu vực đấy lại, bất cứ 1 thay đổi thêm hay xóa của từng khu vực đó ở bảng tổng hợp này cũng thêm hoặc xóa theo. Không biết em đã nói rõ được ý mình cho các bác hiểu chưa ạ?Rõ ràng ở cột Z và cột AA em dùng công thức đấy vẫn đúng, chẳng hỉu sao sang cột AB thì nó lại nhẩy tít xuống dưới thế.Rất mong các bác giúp đỡ.

To transongngocquan: Cám ơn bác đã khen.
 
Xem công thức (đúng nhưng dài quá)
=IF(ROW()>COUNTA(DIACHINV)+COUNTA(DIACHIDD);OFFSET(DIACHILD;ROW()-1-COUNTA(DIACHINV)-COUNTA(DIACHIDD);0;1;1);IF(ROW()>COUNTA(DIACHINV);OFFSET(DIACHIDD;ROW()-1-COUNTA(DIACHINV);0;1;1);OFFSET(DIACHINV;ROW()-3;0;1;1)))

Nguyên nhân:

cột K có chứa công thức gán giá trị rỗng "" cho ô. Nhìn thì thấy 6 ô có dữ liệu nhưng countA sẽ cho 30.

Giải thích:

1. Xét dòng 19 là dòng bắt đầu sai:
countA(DiachiDD) = 30
countA(DIACHINV) = 12
phần tô đỏ 19> 30+12 == False -->

xét If thứ 2 (True): lấy offset(DiachiDD;19 - 1 - 12;0;1;1) = K9 ="" (sai, lẽ ra là P3)

Tình trạng này kéo dài đến hết dòng 42.

2. Xét dòng 43: phần tô đỏ 43> 30+12 == True:
Lấy Offset(DiachiLD;43 - 1 - 12 - 30;0;1;1) = Offset(DiachiLD;0;0;1;1) = P3 = "Thường dân Phố Hoa Bìm Bìm"

Tình trạng này kéo dài đến cuối cột AB lấy các giá trị tuần tự từ P3 trở xuống.

Biện pháp:

Nếu xoá K9:K32:

countA(DiachiDD) = 6 --> phần tô đỏ 19> 6 + 12 == True -->
Lấy Offset(DiachiLD;19 - 1 - 12 - 6;0;1;1) = Offset(DiachiLD;0;0;1;1) = P3 = "Thường dân Phố Hoa Bìm Bìm" (đúng)

Không dùng countif được, kể cả count(if()), is blank, if(DD="") lẫn if(DD<>""), sumproduct(="") lẫn sumproduct(<>""). Vì lẽ ô trống tự nhiên và ô trống do công thức là 2 chuyện khác nhau.

Vậy tốt nhất là xoá K9:K32
Khi có dữ liệu thêm vào I9 chẳng hạn, copy K8 xuống K9.

Ghi chú: Đây chắc chỉ là dữ liệu giả lập hoặc là bài tập! Dữ liệu thực chắc phải gõ tay vào cột K.
 
Hóa ra là vậy, em đã giải quyết được vấn đề của em rồi. Em cám ơn bác ptm nhiều nhiều , đêm hôm vậy mà bác viết hẳn một bài dài để trả lời em làm em xúc động quá.Tặng bác bó hoa (nhưng e không biết chèn vào kiểu gì):D
 
Tôi có phương án khác nè;
B1: Đặt tên các bảng (từ mã --> địa chỉ) của nhân viên (NV), địa điểm (DD), thường dân (TD), khác (KHAC).
B2:
tại ô AA3=IF(ISNA(VLOOKUP(Z3;NV;2;0));IF(ISNA(VLOOKUP(Z3;DD;2;0));IF(ISNA(VLOOKUP(Z3;td;2;0));IF(ISNA(VLOOKUP(Z3;KHAC;2;0));"CHƯA CÓ MÃ NÀY";VLOOKUP(Z3;KHAC;2;0));VLOOKUP(Z3;td;2;0));VLOOKUP(Z3;DD;2;0));VLOOKUP(Z3;NV;2;0))
tại ô AB3=IF(ISNA(VLOOKUP(Z3;NV;4;0));IF(ISNA(VLOOKUP(Z3;DD;4;0));IF(ISNA(VLOOKUP(Z3;td;4;0));IF(ISNA(VLOOKUP(Z3;KHAC;4;0));"CHƯA CÓ MÃ NÀY";VLOOKUP(Z3;KHAC;4;0));VLOOKUP(Z3;td;4;0));VLOOKUP(Z3;DD;4;0));VLOOKUP(Z3;NV;4;0))
B3: kéo xuống dòng 5000 --> finish.
 
Lần chỉnh sửa cuối:
Mình vẫn chạy ổn

Em thử theo cách của bác nhưng k được, chỉ giải quyết được danh sách thường dân và danh sách nhân viên, còn danh sách địa điểm và khác thì toàn báo lỗi, bác chỉnh lại hộ em xem:wallbash:

Mình thấy chạy vẫn ổn,để mình up file lên nhé.
 

File đính kèm

Khắc phục!

Bác ạ, phần trên thì OK rồi nhưng em nhập mã vào danh sách khác vẫn bị lỗi phiền bác xem lại hộ em nhé:drinks:
Do danh sách khác chi 3 có 3 cột, bạn sửa phần tham chiếu vlookup của khác thành số 3 nha:
AB3=IF(ISNA(VLOOKUP(Z3;NV;4;0));IF(ISNA(VLOOKUP(Z3;DD;4;0));IF(ISNA(VLOOKUP(Z3;td;4;0));IF(ISNA(VLOOKUP(Z3;KHAC;3;0));"CHƯA CÓ MÃ NÀY";VLOOKUP(Z3;KHAC;3;0));VLOOKUP(Z3;td;4;0));VLOOKUP(Z3;DD;4;0));VLOOKUP(Z3;NV;4;0))
 
Em thử theo cách của bác nhưng k được, chỉ giải quyết được danh sách thường dân và danh sách nhân viên, còn danh sách địa điểm và khác thì toàn báo lỗi, bác chỉnh lại hộ em xem:wallbash:
To phamphuongthuy: bạn xem file đính kèm xem còn lỗi không

GÓP 1 CÁCH DÙNG HÀM OFFSET
CHỈ DÙNG 1 CÔNG THỨC DUY NHẤT CHO CẢ 3 CỘT
MÃ - TÊN - ĐỊA CHỈ

rar.gif
boyxin LapDS.rar (12.4 KB)​
 
Lần chỉnh sửa cuối:
To boyxin
Thank bác, công thức của bác hay quá, nhưng bác thử nhập tên vào danh sách khác xem, em nhập vào nhưng cột địa chỉ của danh sách này không ra, bác xem dùm em bác nhé.
 
Lần chỉnh sửa cuối:
To boyxin
Thank bác, công thức của bác hay quá, nhưng bác thử nhập tên vào danh sách khác xem, em nhập vào nhưng cột địa chỉ của danh sách này không ra, bác xem dùm em bác nhé.
  1. phần danh sách tổng hợp mới có công thức đến dong 33, phải copy (kéo fill) xuống thêm
  2. nên nhớ là phải có tên thì mới ra danh sách tổng hợp
  • nhập mã, nhập địa chỉ thì không ra danh sách
  • Chỉ nhập tên, không nhập mã, địa chỉ Thì Tên vẫn ra trong danh sách tổng hợp
Bạn kiểm tra xem thế nào
 

File đính kèm

To boyxin
Bác làm ơn giải thích hộ em cái chỗ em để đậm với ===\.
Ten 1 = OFFSET(TTDN!$C$3,,,MATCH(REPT("Z",255),TTDN!$C$3:$C$1000),)
Thank bác nhìu ạ.
 
To boyxin
Bác làm ơn giải thích hộ em cái chỗ em để đậm với ===\.
Ten 1 = OFFSET(TTDN!$C$3,,,MATCH(REPT("Z",255),TTDN!$C$3:$C$1000),)
Thank bác nhìu ạ.
Mình xin hướng dẫn cho:
1/ REPT("Z",255) ie zzzzzz.....zz (len =255)
2/ MATCH(REPT("Z",255),TTDN!$C$3:$C$1000) tìm vị trí "zzzz....z" trong C3:C1000
ie tìm dòng cuối => vị trí
3/ OFFSET(TTDN!$C$3,,,MATCH(REPT("Z",255),TTDN!$C$3:$C$1000),)
Lấy từ TTDN!$C$3 , , , (không dòng, không cột) lấy MATCH(REPT("Z",255),TTDN!$C$3:$C$1000) dòng.
Công thức này cao siêu quá, mình chỉ hiểu đến đó.
 
Web KT

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

Back
Top Bottom