Cách lấy tiêu đề của cột dựa theo số liệu trong cột

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

123

Thành viên mới
Tham gia
6/9/07
Bài viết
20
Được thích
1
C:\Documents and Settings\thuynd\My Documents\Lay tieu de cot.JPG
Chào các bác,
Em xin được hướng dẫn với bài toán như sau:
Em có 1 bảng thống kê, bảng này khoảng 40 cột và 3000 dòng, mỗi cột có tiêu đề, vd: Số TT, mã hàng, chiều dài, chiều rộng...cuối cùng là cột Ghi chú.

Bây giờ em muốn ghi vào cột Ghi chú tình trạng số liệu của các cột còn lại trong bảng, vd: nếu "Mã hàng" và "chiều dài" ở dòng nào đó để trống thì ghi vào "Ghi chú" là "Thiếu mã hàng, thiếu chiều dài"

Em đã thử hàm if, nhưng chỉ được tối đa 7 cột, ở đây lại là 30 cột cơ, nan giải quá, các bác hỗ trợ nhé, em đang cần gấp.
Kính,
 

File đính kèm

  • Lay tieu de cot.JPG
    Lay tieu de cot.JPG
    18.1 KB · Đọc: 40
C:\Documents and Settings\thuynd\My Documents\Lay tieu de cot.JPG
Chào các bác,
Em xin được hướng dẫn với bài toán như sau:
Em có 1 bảng thống kê, bảng này khoảng 40 cột và 3000 dòng, mỗi cột có tiêu đề, vd: Số TT, mã hàng, chiều dài, chiều rộng...cuối cùng là cột Ghi chú.

Bây giờ em muốn ghi vào cột Ghi chú tình trạng số liệu của các cột còn lại trong bảng, vd: nếu "Mã hàng" và "chiều dài" ở dòng nào đó để trống thì ghi vào "Ghi chú" là "Thiếu mã hàng, thiếu chiều dài"

Em đã thử hàm if, nhưng chỉ được tối đa 7 cột, ở đây lại là 30 cột cơ, nan giải quá, các bác hỗ trợ nhé, em đang cần gấp.
Kính,
Trong EX chỉ cho bạn tối đa nồng hàm đến 7 hàm nồng nhau thôi, để ghi chú những bài như trên bạn có thể tham khảo về các đặt Name và đồng thời cach sử dụng hàm Indirect đảm bảo bài của bạn sẽ giải quyết êm ngay. Mình đã gặp như vậy, nhưng không biết ví dụ của mình để ở đâu. Minh tin nếu bạn đã hiểu qua được hàm If..cơ bản thì sẽ không khó để bạn giải quyết vấn đề. Thân
 
Bó tay?
Nếu thiếu 30 cột thì cột ghi chú có chỗ đâu mà ghi.
 
Bao nhiêu cột cũng được. Nhưng bạn phải dùng Function này của mình thôi!
PHP:
Function ghichu(dulieu As Range, cel As Range) As String
If cel.Count <> dulieu.Count Then ghichu = "Vung cel phai bang vung dulieu"
temp = "  "
For i = 1 To cel.Count
    If cel(i) = "" Then
    temp = temp & dulieu(i) & ", "
    End If
Next
ghichu = Trim(Left(temp, Len(temp) - 2))
End Function
Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn Tuyetbay về hướng dẫn, nhưng mình a) không biết cách sử dụng function của bạn như thế nào
b) mình không tải được file của bạn,
có cách nào không dùng VBA mà vẫn giải quyết được bài toán này không?
Rất gấp, cám ơn các bạn,
 
E rằng không có cách làm bằng công thức đâu bạn. Vì số lượng cột của bạn quá nhiều.
Bạn thử tải lại xem! Có thể lúc mình chỉnh sửa dữ liệu thì nó bị ngắt kết nối thôi.
Hoặc bạn mở file của bạn ra -> Nhấn Alt + F11 -> bấm phải chuột vào tên sheet đang nhìn thấy -> chọn Insert -> Module -> Nhấp đúp chuột vào Module hiện ra -> Paste toàn bộ code của mình vào trang trắng kế bên.
Sau đó quay vào bảng tính nhập vào =ghichu(<dòng tiêu đề>,<dòng cần xét bên dưới>)
Vậy là xong.
Thân.
 
Nên tham khảo cái macro này xem sao!

PHP:
Option Explicit

Sub BlankCells()
 Const kT As String = " "
 Dim Rng As Range, Clls As Range
 Dim StrC As String
 Set Rng = Range(Cells(5, 1), Cells([A65500].End(xlUp).Row, 30))
 For Each Clls In Rng
    With Clls
        If .Column < 27 And .Value = "" Then
            Cells(.Row, 31).Value = Cells(.Row, 31).Value & kT & Chr(64 + .Column)
        ElseIf .Column > 26 And .Value = "" Then
            StrC = "A" & Choose(.Column - 26, "A", "B", "C", "D", "E")
            Cells(.Row, 31).Value = Cells(.Row, 31).Value & kT & StrC
        End If
    End With
 Next Clls
End Sub
Vùng sẽ được ghi nhận ô rỗng là 30 cột kể từ 'A5' cho đến hàng cuối của CSDL;
Việc ghi nhận sẽ tại cột 31;
Các cột ghi nhận rỗng sẽ cách nhau bỡi " ";

Chúc thành công mĩ mãn!
 
đừng dùng if lồng nhau dùng thế này thì bao nhiêu cột cũng đc =IF(A2="";"thieu " &$A$1;"")&IF(B2="";"thieu " &$B$1;"")&IF(C2="";"thieu " &$C$1;"")&IF(D2="";"thieu " &$D$1;"")&....& đến bao nhiêu cột thì tùy
 
Bạn ơi! làm vậy chưa chắc ổn đâu? Vì sẽ tốn rất nhiều tài nguyên đó.
Bạn phải lặp lại công thức đến 30 lần lận. Như vậy là quá nhiều và quá mõi tay cũng như sẽ rất nặng cho file.
Không phải lúc nào ta cũng dùng công thức đâu. Tùy vào từng trường hợp thôi.
Thân.
 
C:%5CDocuments%20and%20Settings%5Cthuynd%5CMy%20Documents%5CLay%20tieu%20de%20cot.JPG
Chào các bác,
Em xin được hướng dẫn với bài toán như sau:
Em có 1 bảng thống kê, bảng này khoảng 40 cột và 3000 dòng, mỗi cột có tiêu đề, vd: Số TT, mã hàng, chiều dài, chiều rộng...cuối cùng là cột Ghi chú.

Bây giờ em muốn ghi vào cột Ghi chú tình trạng số liệu của các cột còn lại trong bảng, vd: nếu "Mã hàng" và "chiều dài" ở dòng nào đó để trống thì ghi vào "Ghi chú" là "Thiếu mã hàng, thiếu chiều dài"

Em đã thử hàm if, nhưng chỉ được tối đa 7 cột, ở đây lại là 30 cột cơ, nan giải quá, các bác hỗ trợ nhé, em đang cần gấp.
Kính,

ở đây Tôi không nói là dùng cách nào hay hơn mà chỉ nói cách lồng nhiều hàm if (không bị hạn chế bởi mặc định 7 hàm). Đại ý như sau:
Khi dùng Hàm if nếu muốn lồng được nhiều hơn 7 hàm (mỗi hàm if tìm kết quả của 1 cột) thì bạn phải tạo thêm cột phụ:
- Trong cột kết quả có 7 hàm if lồng nhau để tìm kết quả của 6 cột chính và 1 cột phụ, trong mỗi cột phụ lại có 7 hàm if lồng nhau để tìm kết quả của 6 cột chính tiếp theo và 1 cột phụ tiếp theo.
VD: bạn có 30 cột thì cột kết quả là hàm if tìm từ cột 1 đến cột 6 và cột phụ thứ nhất; cột phụ thứ nhất tìm từ cột 7 đến cột 13 và cột phụ thứ 2;cột phụ thứ 2 tìm từ cột 14 đến cột 20 và cột phụ thứ 3...cứ như vậy cho đến cột cuối cùng. Bạn thử xem.
Chúc vui !
 
đừng dùng if lồng nhau dùng thế này thì bao nhiêu cột cũng đc =IF(A2="";"thieu " &$A$1;"")&IF(B2="";"thieu " &$B$1;"")&IF(C2="";"thieu " &$C$1;"")&IF(D2="";"thieu " &$D$1;"")&....& đến bao nhiêu cột thì tùy
Báo cáo,
Em đã làm theo cách trên và kết quả thật la... khủng khiếp: Dung lượng của file nhảy từ 800KB lên tới 86MB (tám mươi sáu mêgabyte), cuối cùng phải chọn phương án là ...vẫn dùng công thức trên và sau đó paste value vào ô .
Hú vía, trân trọng cám ơn cả nhà,
 
Web KT

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

Back
Top Bottom