Giúp đỡ hàm bỏ qua các ô rỗng.

Liên hệ QC

vsk

Thành viên mới
Tham gia
6/1/09
Bài viết
31
Được thích
1
Nghề nghiệp
Quan Ly
Tình hình là mình có một cái report cần nhiều cột trên một dòng. Các dữ liệu cột thì cố định và đôi lúc để trống. Vì nó dài nên mình cần làm một dòng phụ khác để hiện thị những ô nào có dữ liệu mà thôi, và bỏ qua những ô không có dữ liệu. Ai giúp đỡ mình phải dùng hàm gì... như trong file thì áp dụng hàm có làm sẵn những theo cột thì không dùng được cho dòng, mặc dù đã chuyển row sang column. Mong giúp đỡ. Chờ hồi âm. Mình dùng MSO 2003 nhé.
 

File đính kèm

  • ignoreBlank.xls
    22.5 KB · Đọc: 72
Bạn quét chọn cột Data, Copy, sau đó dùng lệnh Paste special/chọn transpose.
 
Hoặc bạn dùng hàm tại ô F4:
=IF(F2="","",VLOOKUP(F2,$A$3:$C$22,3,0))
 
Tình hình là mình có một cái report cần nhiều cột trên một dòng. Các dữ liệu cột thì cố định và đôi lúc để trống. Vì nó dài nên mình cần làm một dòng phụ khác để hiện thị những ô nào có dữ liệu mà thôi, và bỏ qua những ô không có dữ liệu. Ai giúp đỡ mình phải dùng hàm gì... như trong file thì áp dụng hàm có làm sẵn những theo cột thì không dùng được cho dòng, mặc dù đã chuyển row sang column. Mong giúp đỡ. Chờ hồi âm. Mình dùng MSO 2003 nhé.
Nếu chỉ có thế thì thật sự dùng mấy công thức mảng chẳng đáng tí nào
Vài thao tác là xong ngay thôi

[video=youtube;WN9QIZFMrr8]http://www.youtube.com/watch?v=WN9QIZFMrr8[/video]
 
Nếu chỉ có thế thì thật sự dùng mấy công thức mảng chẳng đáng tí nào
Vài thao tác là xong ngay thôi
Nếu chỉ có thế thì quá đơn giản. Vấn đề là dữ liệu nhiều và dài.. và mình muốn nó được tự động độ mỗi khi mình gõ dữ liệu vào... Cách copy cũng hay nhưng bất tiện.
Bác Thế Quang kêu mình dùngVlook sao mà dùng được? đang nói làm cách nào nếu dữ liệu đó được tính theo dòng chứ không phải là chuyển dự liệu có sẵn thì cột qua dòng. lệnh transpose thì cũng chỉ là thủ thuật tay thôi không tự động cập nhật dự liệu mỗi khi có thay đổi.
 
Bạn thử file đính kèm xem nhé
 

File đính kèm

  • ignoreBlank(1).xls
    28 KB · Đọc: 69
Bạn thử file đính kèm xem nhé
Công thức của bạn nó đâu có bỏ được cell rổng chứ. Có chăng là vầy:
PHP:
=IF(COLUMNS($A:A)>COUNT(IF(Data2="","",TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(Data2)))))),"",INDEX(Data2,,SMALL(IF(Data2="","",TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(Data2))))),COLUMNS($A:A))))
Với Data2 là dữ liệu đang được xếp theo chiều ngang
 

File đính kèm

  • ignoreBlank.xls
    32 KB · Đọc: 61
Tình hình là mình có một cái report cần nhiều cột trên một dòng. Các dữ liệu cột thì cố định và đôi lúc để trống. Vì nó dài nên mình cần làm một dòng phụ khác để hiện thị những ô nào có dữ liệu mà thôi, và bỏ qua những ô không có dữ liệu. Ai giúp đỡ mình phải dùng hàm gì... như trong file thì áp dụng hàm có làm sẵn những theo cột thì không dùng được cho dòng, mặc dù đã chuyển row sang column. Mong giúp đỡ. Chờ hồi âm. Mình dùng MSO 2003 nhé.
Dùng hàm tự tạo đi. Dữ liệu nhiều mà dùng công thức mảng thì chỉ có chết.
PHP:
Function IGNOREBLANK(Rng As Range, Col As Long)
Dim Str As String
If Rng.Rows.Count > Rng.Columns.Count Then
    Str = Join(WorksheetFunction.Transpose(Rng), vbBack)
Else
    Str = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Rng)), vbBack)
End If
Str = Replace(Replace(WorksheetFunction.Trim(Replace(Replace(Str, " ", vbTab), vbBack, " ")), " ", vbBack), vbTab, " ")

If Col - 1 > UBound(Split(Str, vbBack)) Then
    IGNOREBLANK = ""
Else
    IGNOREBLANK = Split(Str, vbBack)(Col - 1)
End If
End Function
 

File đính kèm

  • ignoreBlank.xls
    40 KB · Đọc: 70
Dùng hàm tự tạo đi. Dữ liệu nhiều mà dùng công thức mảng thì chỉ có chết.
PHP:
Function IGNOREBLANK(Rng As Range, Col As Long)
Dim Str As String
If Rng.Rows.Count > Rng.Columns.Count Then
    Str = Join(WorksheetFunction.Transpose(Rng), vbBack)
Else
    Str = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Rng)), vbBack)
End If
Str = Replace(Replace(WorksheetFunction.Trim(Replace(Replace(Str, " ", vbTab), vbBack, " ")), " ", vbBack), vbTab, " ")

If Col - 1 > UBound(Split(Str, vbBack)) Then
    IGNOREBLANK = ""
Else
    IGNOREBLANK = Split(Str, vbBack)(Col - 1)
End If
End Function
Rất khó để dùng Join và Split nếu vùng dữ liệu là tùy ý: Nhiều dòng, nhiều cột hoặc vùng dữ liệu không liên tục
Giải quyết bài này không gì dễ bằng chuyển mọi thứ sang Array mà làm
PHP:
Function IgnoreBlank2(Pos As Long, ParamArray sArray())
  Dim SubArr, Item
  On Error Resume Next
  IgnoreBlank2 = ""
  For Each SubArr In sArray
    For Each Item In SubArr
      If Trim(Item) <> "" Then
        Pos = Pos - 1
        If Pos = 0 Then IgnoreBlank2 = Item: Exit Function
      End If
    Next
  Next
End Function
Hàm này chạy được trên mọi kiểu bố trí của dữ liệu, thậm chí lấy được kết quả từ 1 Array do công thức trả về
 

File đính kèm

  • ignoreBlank.xls
    51.5 KB · Đọc: 82
Lần chỉnh sửa cuối:
Cảm ơn mấy bác rất nhiều...Đã quyết định dùng theo cách của bác Hữu Thắng.
 
A ,=IF(E12>G12;3;IF(E12<G12;0;1))
B
C
BTỷ số
AB-A1B
AC3-1A3C
AD-A1D
BC4-5B0C
BD-BD
CD-C1D
0
100000ƯEWQ
ƯEWQ
 
Cảm ơn mấy bác rất nhiều...Đã quyết định dùng theo cách của bác Hữu Thắng.
Em đang cần dồn dữ liệu bỏ qua ô trống, tìm được Topic của Bác đúng ý rồi nhưng loay hoay mãi chưa biết các thêm Hàm tự tạo vào excel hoặc tạo tên tắt Data. Bác hay các Anh Chị Em trong diễn đàn vui lòng hướng dẫn giúp mình với, mình dùng Excel 2013. Cám ơn Bác.
 
Em đang cần dồn dữ liệu bỏ qua ô trống, tìm được Topic của Bác đúng ý rồi nhưng loay hoay mãi chưa biết các thêm Hàm tự tạo vào excel hoặc tạo tên tắt Data. Bác hay các Anh Chị Em trong diễn đàn vui lòng hướng dẫn giúp mình với, mình dùng Excel 2013. Cám ơn Bác.
Mới mua nick à bạn :)
 
Nhờ các anh chị chỉ giúp em cách Vloopkup dữ liệu từ sheet "Data" sang sheet "KQ" như file đính kèm, giá trị tìm là tên NV1, NV2...
 

File đính kèm

  • Data.xlsx
    14.4 KB · Đọc: 8
Nhờ các anh chị chỉ giúp em cách Vloopkup dữ liệu từ sheet "Data" sang sheet "KQ" như file đính kèm, giá trị tìm là tên NV1, NV2...
ô C2:
=INDEX(Data!$C$2:$AO$80,MATCH($B2,Data!$B$2:$B$80,0),MATCH(C$1,Data!$C$1:$AO$1,0))
Và kéo công thức hết bảng.

Hoặc nếu vẫn muốn dùng Vlookup thì phải thêm 1 dòng để lấy thứ tự cột cho các cột cần lấy.
và điền công thức này vào cột C:=VLOOKUP($B3,Data!$B$1:$AO$80,KQ!$C$1:$Z$1,0) . Đừng kéo công thức qua phải nhé.

1665124108305.png
 
Em nhờ các anh chị chỉ giúp cách tính giá trị MAX từ sheet Data sang sheet KQ theo giá trị tìm là mã NV1, NV2... với ạ. Em cảm ơn các anh chị
 

File đính kèm

  • Data (2).xlsx
    14.5 KB · Đọc: 9
Em nhờ các anh chị chỉ giúp cách tính giá trị MAX từ sheet Data sang sheet KQ theo giá trị tìm là mã NV1, NV2... với ạ. Em cảm ơn các anh chị
C2=MAX(OFFSET(Data!$B$1:$B$12;MATCH(KQ!B2;Data!$B$1:$B$12;0)-1;0;1;MAX(IF(NOT(ISBLANK(Data!1:12));COLUMN(Data!1:1)))))
Hình như là được.
 
Lần chỉnh sửa cuối:
C2=MAX(OFFSET(Data!$B$1:$B$12;MATCH(KQ!B2;Data!$B$1:$B$12;0)-1;0;1;MAX(IF(NOT(ISBLANK(Data!1:12));COLUMN(Data!1:1)))))
Hình như là được.
1669014966626.png
C2=MAX(OFFSET(Data!$B$1:$B$12;MATCH(KQ!B2;Data!$B$1:$B$12;0)-1;0;1;MAX(IF(NOT(ISBLANK(Data!1:12));COLUMN(Data!1:1)))))
Hình như là được.
Em làm bị báo lỗi như này ạ, xin chỉ giúp cách khắc phục
 
Web KT
Back
Top Bottom