Hỏi nhanh - đáp nhanh về công thức (phần 1)

Liên hệ QC
Status
Không mở trả lời sau này.
Thanks Huuthang_bd,
Tôi mượn tạm bảng tính của bạn, dùng tà đạo trong công thức để ngắn hơn một chút,
Để công thức tại cột E nhé,
HTML:
=IF(A2="","",SUM(IF(ISERROR(VALUE(RIGHT(C2:$C$22,LEN(C2:$C$22)-FIND("=",C2:$C$22)))),0,VALUE(RIGHT(C2:$C$22,LEN(C2:$C$22)-FIND("=",C2:$C$22)))))-SUM(E3:$E$22))
Dùng mảng nên Ctrl+Shift+Enter và kết quả chỉ chính xác khi kéo hết các dòng của bảng.
File đính kèm,
Tôi thấy trong hình tác giả đưa lên trong dòng tiêu đề của nội dung công việc lại có ">=16m". Nếu chẳng may một dòng tiêu đề nội dung công việc mà kết thúc bằng ">=16" thì có lẽ công thức của bạn sẽ sai. Mục đích ở đây là xác định vùng dữ liệu của từng công việc. Từ đó mới tính toán.
Tôi cũng đang vướng mắc về vấn đề này, nếu dùng macro thì code được viết như thế nào? Mong :-=
Đây là một cách. Nếu áp dụng thì tùy biến cho phù hợp dữ liệu.
PHP:
Sub GPE()
Application.Calculation = xlCalculationManual
Dim Tong As Double: Tong = 0
With Range([C1], [C65536].End(xlUp))
    For i = .Rows.Count To 1 Step -1
        If .Cells(i).Offset(, -1).Value <> "" Then
            .Cells(i).Offset(, 2).Value = Tong
            Tong = 0
        Else
            Tong = Tong + Mid(.Cells(i).Value, InStr(.Cells(i).Value, "=") + 1, 100)
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Text trên file đính kèm
 
Tôi thấy trong hình tác giả đưa lên trong dòng tiêu đề của nội dung công việc lại có ">=16m". Nếu chẳng may một dòng tiêu đề nội dung công việc mà kết thúc bằng ">=16" thì có lẽ công thức của bạn sẽ sai. Mục đích ở đây là xác định vùng dữ liệu của từng công việc. Từ đó mới tính toán.
Đây là một cách. Nếu áp dụng thì tùy biến cho phù hợp dữ liệu.
PHP:
Sub GPE()
Application.Calculation = xlCalculationManual
Dim Tong As Double: Tong = 0
With Range([C1], [C65536].End(xlUp))
    For i = .Rows.Count To 1 Step -1
        If .Cells(i).Offset(, -1).Value <> "" Then
            .Cells(i).Offset(, 2).Value = Tong
            Tong = 0
        Else
            Tong = Tong + Mid(.Cells(i).Value, InStr(.Cells(i).Value, "=") + 1, 100)
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Text trên file đính kèm
---
Cám ơn bạn, tại tôi viết không được rõ ý, bạn có thể viết hàm tự tạo, vùng được cộng là theo vùng được chọn (giống như mở input chọn từng vùng riêng biệt). :-=
 
Tôi thấy trong hình tác giả đưa lên trong dòng tiêu đề của nội dung công việc lại có ">=16m". Nếu chẳng may một dòng tiêu đề nội dung công việc mà kết thúc bằng ">=16" thì có lẽ công thức của bạn sẽ sai. Mục đích ở đây là xác định vùng dữ liệu của từng công việc. Từ đó mới tính toán.

Tôn trọng với quan điểm của bạn,
1. Tôi cũng đã nhìn thấy trong hình đó rồi, khi mà đưa lên điều kiện thì điều kiện của vấn đề gì, của cái gì và ntn? mình đánh giá dữ liệu đồng nhất?
2. Trong tính toán và mọi thứ, đừng nên dùng từ "Nếu" hoặc "chẳng may" => như vậy thì chuyện gì cũng có thể xảy ra.
3.
Mục đích ở đây là xác định vùng dữ liệu của từng công việc. Từ đó mới tính toán.
Chẳng lẽ không tính toán trước rồi mới loại trừ dần các vùng dữ liệu được sao?

=> Vấn đề là vừa đủ theo yêu cầu của tác giả, bạn có đồng ý không? Nói túm lại là trình độ Excel của bạn tôi đang phải học hỏi nhiều,
Thân,
 
---
Cám ơn bạn, tại tôi viết không được rõ ý, bạn có thể viết hàm tự tạo, vùng được cộng là theo vùng được chọn (giống như mở input chọn từng vùng riêng biệt). :-=
Nếu bạn muốn UDF thì đây.
PHP:
Function Tong(Dulieu As Range, Congviec As Range)
On Error Resume Next
Tong = 0
For i = Congviec.Row - Dulieu.Row + 2 To Dulieu.Rows.Count
    If Dulieu.Cells(i, 1).Value <> "" Then Exit For
    Tong = Tong + Mid(Dulieu.Cells(i, Dulieu.Columns.Count).Value, InStr(Dulieu.Cells(i, Dulieu.Columns.Count).Value, "=") + 1, 100)
Next
    If Congviec.Value = "" Then Tong = ""
End Function
Cú pháp:
Mã:
=Tong(VungDuLieu,CongViec)
VungDuLieu là vùng dữ liệu có cột đầu tiên là cột chứa tên công việc, cột cuối cùng là cột dữ liệu dùng để tính toán.
CongViec là ô tên công việc cần tính toán.
Xem thêm trong file.
Tôn trọng với quan điểm của bạn,
1. Tôi cũng đã nhìn thấy trong hình đó rồi, khi mà đưa lên điều kiện thì điều kiện của vấn đề gì, của cái gì và ntn? mình đánh giá dữ liệu đồng nhất?
2. Trong tính toán và mọi thứ, đừng nên dùng từ "Nếu" hoặc "chẳng may" => như vậy thì chuyện gì cũng có thể xảy ra.
3.
Chẳng lẽ không tính toán trước rồi mới loại trừ dần các vùng dữ liệu được sao?

=> Vấn đề là vừa đủ theo yêu cầu của tác giả, bạn có đồng ý không? Nói túm lại là trình độ Excel của bạn tôi đang phải học hỏi nhiều,
Thân,
Tôi chỉ muốn chỉ ra chỗ có thể gây ra lỗi khi sử dụng để người dùng có thể đề phòng thôi. Vì tác giả chỉ đưa lên một tấm ảnh, tôi nghĩ là tấm ảnh đó không thể nào bao quát hết mọi trường hợp của dữ liệu và trường hợp tôi đưa ra cũng không phải là quá đặt biệt, chúng ta chưa biết được quy luật của dữ liệu. Vì vậy, tôi muốn chỉ ra chỗ có thể gây ra lỗi khi sử dụng để người dùng có thể đề phòng thôi. Còn đương nhiên công thức chỉ nên phục vụ vừa đủ yêu cầu đặt ra thôi. Vì có cố cũng không thể nào rào hết mọi trường hợp được.
 
Lần chỉnh sửa cuối:
Nếu bạn muốn UDF thì đây.
PHP:
Function Tong(Dulieu As Range, Congviec As Range)
On Error Resume Next
Tong = 0
For i = Congviec.Row - Dulieu.Row + 2 To Dulieu.Rows.Count
    If Dulieu.Cells(i, 1).Value <> "" Then Exit For
    Tong = Tong + Mid(Dulieu.Cells(i, Dulieu.Columns.Count).Value, InStr(Dulieu.Cells(i, Dulieu.Columns.Count).Value, "=") + 1, 100)
Next
    If Congviec.Value = "" Then Tong = ""
End Function
Cú pháp:
Mã:
=Tong(VungDuLieu,CongViec)
VungDuLieu là vùng dữ liệu có cột đầu tiên là cột chứa tên công việc, cột cuối cùng là cột dữ liệu dùng để tính toán.
CongViec là ô tên công việc cần tính toán.
Xem thêm trong file.
---
Đúng ý rồi, nhưng viết đơn giản lại có được không bạn, chỉ cần như thế này thôi (dữ liệu theo file của bạn):chọn vùng C2:C5 => click OK => nhận kết quả =21 => xong :-=
 
---
Đúng ý rồi, nhưng viết đơn giản lại có được không bạn, chỉ cần như thế này thôi (dữ liệu theo file của bạn):chọn vùng C2:C5 => click OK => nhận kết quả =21 => xong :-=
Được thì được thôi. Dễ hơn là đằng khác. Nhưng mà khi tính toán không lẽ chọn từng vùng như vậy à.
Như thế này:
PHP:
Sub TinhTong()
On Error Resume Next
Dim Tong As Double
For Each cll In Selection
    Tong = Tong + Mid(cll.Value, InStr(cll.Value, "=") + 1, 100)
Next
MsgBox "Ket qua la: " & Tong
End Sub
Tạm thời đưa kết quả vào Msgbox. Muốn đưa kết quả đi đâu thì sửa code lại.
 
Được thì được thôi. Dễ hơn là đằng khác. Nhưng mà khi tính toán không lẽ chọn từng vùng như vậy à.
Như thế này:
PHP:
Sub TinhTong()
On Error Resume Next
Dim Tong As Double
For Each cll In Selection
    Tong = Tong + Mid(cll.Value, InStr(cll.Value, "=") + 1, 100)
Next
MsgBox "Ket qua la: " & Tong
End Sub
Tạm thời đưa kết quả vào Msgbox. Muốn đưa kết quả đi đâu thì sửa code lại.
---
Là sao? Bạn nghỉ yêu cầu đơn giản thôi. Hãy viết giúp 1 hàm tự tạo, đứng ở bất kỳ cell nào trên bảng tính => gọi hàm => chọn vùng (ví dụ: C2:C5)=> ra kết quả. Mong :-=
 
---
Là sao? Bạn nghỉ yêu cầu đơn giản thôi. Hãy viết giúp 1 hàm tự tạo, đứng ở bất kỳ cell nào trên bảng tính => gọi hàm => chọn vùng (ví dụ: C2:C5)=> ra kết quả. Mong :-=
Thì bạn sửa Sub thành Function thôi.
Như thế này:
PHP:
Function Tong(Dulieu As Range) As Double
On Error Resume Next
For Each cll In Dulieu
    Tong = Tong + Mid(cll.Value, InStr(cll.Value, "=") + 1, 100)
Next
End Function
 
Giúp dùm tôi một vấn đề này các bạn nhé:
tôi có 1 sheet chứa danh sách tổng hợp, trong đó 1 người có thể có nhiều hàng dữ liệu nhưng trùng 1 mã, tôi lập 1 sheet thứ 2 để xuất ra thành 1 hóa đơn. tôi muốn là khi tôi gõ 1 mã dò tìm của 1 người nào đó thì bên hóa đơn sẽ liệt kê tất cả các số liệu của người đó. mong các anh chị em giúp dùm. rất cám ơn.
 
Giúp dùm tôi một vấn đề này các bạn nhé:
tôi có 1 sheet chứa danh sách tổng hợp, trong đó 1 người có thể có nhiều hàng dữ liệu nhưng trùng 1 mã, tôi lập 1 sheet thứ 2 để xuất ra thành 1 hóa đơn. tôi muốn là khi tôi gõ 1 mã dò tìm của 1 người nào đó thì bên hóa đơn sẽ liệt kê tất cả các số liệu của người đó. mong các anh chị em giúp dùm. rất cám ơn.
Dạng bài lọc dữ liệu này trên diễn đàn có nhiều lắm. Bạn đưa file lên để mọi người giúp cho, ghi rõ yêu cầu trong file luôn nhé.
 
Giúp dò tìm số liệu

Mình có 2 sheet, sheet 1 chứa dữ liệu tổng hợp của nhiều người, trong dó 1 người có thể có nhiều hàng dữ liệu, mỗi người có 1 mã khác nhau. tôi muốn trong sheet 2 khi tôi đánh mã của người nào đó thì sẽ hiện ra các hàng số lệu của người đó (in ố liệu từng người). mong các bạn giúp dùm nhé. rất cám ơn
(dính kèm file)
 
Dạng bài này có rất nhiều ở trên diễn đàn rồi. bạn xem trong file đính kèm nhé!
 
Bạn xem file có đúng ý chưa nhé. Có gì thông báo lại để Tôi chỉnh sửa.
 
Excel.jpg

Ta có thể dùng hàm gì để ở ô G8 có thể tính tổng được các số màu đỏ(kết quả của dãy tính đằng trước dấu bằng) em đã khoanh tròn (E9:E13), khi ở phần mềm dự toán thì nó tự động cộng cho mình nhưng khi kết xuất sang excel nó không hiện hàm mà chỉ hiện kết quả. Vậy có anh chị nào biết tính thì xin chỉ giùm em! Em cảm ơn
Lưu ý:
1-Với dạng bảng này thì có rất nhiều công tác, vả lại mỗi công tác này thường có số lượng dòng diễn giải không bằng nhau (có thể có >500 công tác).

2-Phải đảm bảo rằng các số liệu bên phải của dấu bằng "=" là đúng. Vì có trường hợp phải điều chỉnh lại kích thước theo thực tế thi công.

Ủa, tác giả của câu hỏi đâu rồi?
Mấy ngày nay em bận ở công trình ko lướt web được, giờ cũng mới chỉ ở quán net ko thử được các hàm trên đó được. Các anh có thể đưa ra hàm nào đó mà không cần thông qua thêm ô, cột trung gian không? Em cảm ơn nhiều!
 
Mấy ngày nay em bận ở công trình ko lướt web được, giờ cũng mới chỉ ở quán net ko thử được các hàm trên đó được. Các anh có thể đưa ra hàm nào đó mà không cần thông qua thêm ô, cột trung gian không? Em cảm ơn nhiều!

Vấn đề này đã nói rồi mà,
Bạn xem các bài trước đó, có cả hàm lẫn Macro của Huuthang_bd rất tốt,
- Hàm thì xem bài: http://www.giaiphapexcel.com/forum/showpost.php?p=208615&postcount=1309
hoặc: http://www.giaiphapexcel.com/forum/showpost.php?p=208615&postcount=1310

- Macro thì các bài sau đó,
Thân,
 
xin hỏi bạn MinhCong, trong công thức của bạn đưa ra (IF(COUNT(VT)<ROWS($1:1),"",INDEX(Data,SMALL(VT,ROWS($1:1)),COLUMN(C1))) thì VT là gì, Data là vùng nào, mình chưa hiểu lắm, nhờ bạn chỉ rõ hơn
 
Gởi bạn MinhCong. Bạn vui lòng sử dụng địa chỉ cụ thể dùm mình, đưng đặt tên vùng, do mình mới học excel nên xem lại hướng dẫn của bạn, mình cũng không làm được. giúp mình bạn nhé. Rất cám ơn
 
Gởi bạn MinhCong. Bạn vui lòng sử dụng địa chỉ cụ thể dùm mình, đưng đặt tên vùng, do mình mới học excel nên xem lại hướng dẫn của bạn, mình cũng không làm được. giúp mình bạn nhé. Rất cám ơn
Nếu Bạn không thích đặt tên vùng thì dùng thêm 1 cột phụ nữa vậy. Cái này dễ hiểu hơn.
Công thức lọc hơi dài vì phải bẩy lỗi (nên phải dùng hàm if(iserror...), nếu muốn ngắn mà không cần bẩy lỗi thì Bạn dùng hàm index() không cũng được.
 
Loại bỏ các số liệu trùng nhau

Chào bạn MinhCong, rất cám ơn bạn đã giúp đỡ tôi xử lý dùm bảng tính vừa qua, tuy nhiên khi vào làm thực tế, mình lại gặp một vấn đề nữa, mong bạn giúp dùm nhé. Rất cám ơn bạn.
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom