Tính tổng giúp các C.ty TNHH (cụm từ TNHH đánh không theo thứ tự) (1 người xem)

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

Người dùng đang xem chủ đề này

LinDan

Thành viên tiêu biểu
Tham gia
8/2/12
Bài viết
412
Được thích
111
Bên tôi có trách nhiệm kiểm tra tổng số tiền giải ngân của từng nhóm Công ty, tuy vậy khách hàng gửi đến hồ sơ thì dữ liệu đầu vào đánh không thống nhất

Vấn đề của tôi cần là: Tính tổng giá trị giải ngân của các công ty trách nhiệm hữu hạn (TNHH), tuy vậy chữ TNHH ở đây nằm không theo quy luật gì cả, rất mong các bạn giúp cho (kết quả minh họa trong file đính kèm là 2.100)

(Nếu được cả 2 cách công thức và VBA càng tốt)

Xin cảm ơn rất nhiều.
 

File đính kèm

Bên tôi có trách nhiệm kiểm tra tổng số tiền giải ngân của từng nhóm Công ty, tuy vậy khách hàng gửi đến hồ sơ thì dữ liệu đầu vào đánh không thống nhất

Vấn đề của tôi cần là: Tính tổng giá trị giải ngân của các công ty trách nhiệm hữu hạn (TNHH), tuy vậy chữ TNHH ở đây nằm không theo quy luật gì cả, rất mong các bạn giúp cho (kết quả minh họa trong file đính kèm là 2.100)

(Nếu được cả 2 cách công thức và VBA càng tốt)

Xin cảm ơn rất nhiều.
Cái này cần gì VBA, dùng công thức đơn giản này đã cho tốc tộ tính toán tốt rồi:
=+SUMIF($A$2:$B$8;"*"&"TNHH"&"*";$B$2:$B$8)
 
Công thức của bác rất hay Cho phép tôi hỏi thêm, nếu cần trích lọc những công ty TNHH ra (5 Công ty) thì có cách gì không? Trong thực tế danh sách của tôi rất dài.
 
Cái này cần gì VBA, dùng công thức đơn giản này đã cho tốc tộ tính toán tốt rồi:
=+SUMIF($A$2:$B$8;"*"&"TNHH"&"*";$B$2:$B$8)
Thay vì
"*"&"TNHH"&"*"
Ta viết thành:
"*TNHH*"
Cho nó gọn (& làm gì khi tất cả đều là chuổi)
----------------
Công thức của bác rất hay Cho phép tôi hỏi thêm, nếu cần trích lọc những công ty TNHH ra (5 Công ty) thì có cách gì không? Trong thực tế danh sách của tôi rất dài.
Dùng AutoFilter hoặc Advanced Filter là xong
 
Có cách nào dùng Excel thông thường để lọc không hả thày?

(dữ liệu của tôi khoảng 200 dòng).

Excel thông thường nghĩa là ý bạn muốn nói đến công thức đấy à?
Chủ đề LỌC DỮ LIỆU THEO ĐIỀU KIỆN có đầy trên GPE rồi còn gì ---> Tìm đọc và áp dụng thôi
Chẳng hạn với dữ liệu nằm ở A2:B200, ta sẽ làm như sau:
- Đặt 2 name:
Mã:
Data =Sheet1!$A$2:$B$1000
Mã:
Pos =IF(LEN(OFFSET(Data,,,,1))-LEN(SUBSTITUTE(OFFSET(Data,,,,1),"TNHH","")),ROW(INDIRECT("1:"&ROWS(Data))),"")
- Công thức trích lọc:
Mã:
=IF(ROWS($1:1)>COUNT(Pos),"",INDEX(Data,SMALL(Pos,ROWS($1:1)),1))
Vậy thôi
------------
Nói tóm lại thì để làm 1 bài toán trích lọc bằng công thức, ta cần các công đoạn sau:
- Đặt name tham chiếu đến vùng dữ liệu
- Đặt nàme xác định vị trí dữ liệu theo điều kiện (name này sẽ khác nhau theo từng điều kiện cụ thể)
- Công thức trích lọc trên bảng tính sẽ luôn luôn giống công thức ở trên
 
Nhờ thày Ndu và các bạn giúp tôi Code lọc, tôi tìm nghĩ mãi từ sáng chưa ra thuật toán của bài.
 
Thì bạn Record Macro là xong thôi mà, khi lọc bạn chọn Constains/đánh TNHH vào là xong.
 
Xin sửa lại code dùm

Tôi định bắt chước thày Ndu viết thử code nhưng chưa chạy được, xin hãy sửa lại dùm cho

PHP:
Sub Loc()
    Range("C:D").Clear
    With Sheet1
      With .Range("A1").CurrentRegion
        .AutoFilter 1, Criterial:="=*TNHH*"
        .SpecialCells(12).Copy Range("E1")
        .AutoFilter
      End With
    End With
    With Range("E1").CurrentRegion
      If .Rows.Count > 1 Then _
        Intersect(.Cells, .Offset(1, -1)).Resize(, 1) = Evaluate("ROW(R:R)")
     End With
   End If
End Sub
 
Xin cho hỏi về Name Pos nhẽ ra phải viết đầy đủ là

PHP:
Pos=IF(LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""))<>0;ROW(INDIRECT("1:"&ROWS(Data)));"")
chứ.

tại sao trong bài chỉ viết
PHP:
Pos=IF(LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""));ROW(INDIRECT("1:"&ROWS(Data)));"")

mà máy cũng hiểu được

Máy tự hiểu khác không mới lấy (còn trường hợp LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""))=0 bỏ đi)
 
Xin cho hỏi về Name Pos nhẽ ra phải viết đầy đủ là

PHP:
Pos=IF(LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""))<>0;ROW(INDIRECT("1:"&ROWS(Data)));"")
chứ.

tại sao trong bài chỉ viết
PHP:
Pos=IF(LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""));ROW(INDIRECT("1:"&ROWS(Data)));"")

mà máy cũng hiểu được

Máy tự hiểu khác không mới lấy (còn trường hợp LEN(OFFSET(Data;;;;1))-LEN(SUBSTITUTE(OFFSET(Data;;;;1);"TNHH";""))=0 bỏ đi)
Vì số 0 tương đương với FALSE, các số còn lại (kể cả số âm) đều xem như =TRUE
Vậy thay vì viết:
IF(Điều kiện <> 0, ...)
ta viết
IF(Điều kiện,...)
Cũng chẳng chết thằng Tây nào (Điều kiện mà =TRUE thì cũng xem như <> 0 rồi)
Ẹc... Ẹc...
 
Tôi định bắt chước thày Ndu viết thử code nhưng chưa chạy được, xin hãy sửa lại dùm cho

PHP:
Sub Loc()
    Range("C:D").Clear
    With Sheet1
      With .Range("A1").CurrentRegion
        .AutoFilter 1, Criterial:="=*TNHH*"
        .SpecialCells(12).Copy Range("E1")
        .AutoFilter
      End With
    End With
    With Range("E1").CurrentRegion
      If .Rows.Count > 1 Then _
        Intersect(.Cells, .Offset(1, -1)).Resize(, 1) = Evaluate("ROW(R:R)")
     End With
   End If
End Sub
Sai vài chổ:
1> Dư thằng End If cuối cùng
2> Lưu ý chữ Criteria1 ---> Cái màu đỏ là số 1, không phải chữ l nha
Code sửa lại:
PHP:
Sub Loc()
  Range("C:D").Clear
  With Sheet1
    With .Range("A1").CurrentRegion
      .AutoFilter 1, "*TNHH*"
      .SpecialCells(12).Copy Range("E1")
      .AutoFilter
    End With
  End With
  With Range("E1").CurrentRegion
    If .Rows.Count > 1 Then _
      Intersect(.Cells, .Offset(1)).Offset(, -1).Resize(, 1) = Evaluate("ROW(R:R)")
  End With
End Sub
 
Web KT

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

Back
Top Bottom