cuncon2006 đã viết:Xin loi nhe.
Toi moi tham gia dien dan nen quen mat. Toi da doc tra loi cua ban. Cach giai toi da tham khao tren dien dan nhung khi lam lai khong duoc. Mong ban chi ro toi sai o dau???
Thanks.
=SUM(IF(C7:C16=$B28,IF(A7:A16=VALUE(RIGHT(C$27,1)),F7:F16,0),0))
={SUM(IF((MONTH($A$7:$A$16)=VALUE(RIGHT(C$27)))*($C$7:$C$16=$B28),$F$7:$F$16,0))} (sau khi gõ công thức bạn nhấn Ctrl+shift+Enter)
cuncon2006 đã viết:Thanks. Nhờ bạn chỉ giùm thêm một chút nữa là tại sao lại ấn Ctrl+shift+Enter mà không phải là Enter. Bài nào cũng phải ấn tổ hợp 3 phím này hay chỉ mỗi dạng bài này thôi.
Có 2 cách để thực hiện :thanhtam348 đã viết:Cám ơn! - Xin giúp thêm, như cách trên thì chỉ được công thức trong một cells H4, giúp tôi làm sao để mổi khi nhập một tên nào đó vào cột G5 thì cột H5 vẩn có một công thức là =SUMIF($B$4:$B$30,G5,$C$4:$C$30) tương ứng.
Dùng VBA thì như sau :thanhtam348 đã viết:Cám ơn bạn, vậy còn dùng VBA thì phải làm sao?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then Range("H" & Target.Row) = "=SUMIF($B$4:$B$30,G" & Target.Row & " ,$C$4:$C$30)"
End Sub
tedaynui đã viết:Dùng VBA thì như sau :
TDNMã:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then Range("H" & Target.Row) = "=SUMIF($B$4:$B$30,G" & Target.Row & " ,$C$4:$C$30)" End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then Range("H" & Target.Row).Value = WorksheetFunction.SumIf(Range("B4:B30"), Range("G" & Target.Row), Range("C4:C30"))
End Sub
các bạn nói phải, nghĩ thoáng qua có thể mình hỏi ngớ thật, nhưng trong trường hợp của mình không hiểu sao làm 1 bảng tính nặng máy ghê nên mình nghĩ nhờ VBA cho nhẹ bớt, và vì cột công thức đó tôi Hide nên mổi lần muốn copy phải Unhide bất tiện.ThuNghi đã viết:Tôi chả hiểu tại sao hàm sumif của MS quá chuẩn rồi mà thanhtam lại cần VBA làm gì. MỘt lần công thức và copy là xong.
1':
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then Range("H" & Target.Row).Value = WorksheetFunction.SumIf(Range("B4:B30"), Range("G" & Target.Row), Range("C4:C30"))
End Sub
2':
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Target.Column = 7 Then Range("H" & Target.Row) = "=SUMIF($B$4:$B$30,G" & Target.Row & " ,$C$4:$C$30)"
[B]End Sub[/B]
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If not Intersect(Target, Range("G:G")) Is Nothing then Range("H" & Target.Row) = "=SUMIF($B$4:$B$30,G" & Target.Row & " ,$C$4:$C$30)"
[B]End Sub[/B]
Chào bạntruong.japfa đã viết:EM cần các bác giúp viết một đoạn Code tự động tính toán khi nhập liệu
Yêu cầu rất đơn giản: Khi nhập dữ liệu vào cột A và cột B thì cột C sẽ tự động điền kết quả phép nhân A*B vào.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Thoat
If Target.Column > 2 Then Exit Sub
Cells(Target.Row, 3).Value = Cells(Target.Row, 1).Value * Cells(Target.Row, 2).Value
Exit Sub
Thoat:
Cells(Target.Row, 3).Value = "data error"
End Sub
tedaynui đã viết:Chào bạn
Bạn có thể sử dụng đoạn code này cho yêu cầu của mình, có bẫy lỗi khi dữ liệu nhập vào không phải Nuber thì cột C là "data error"
TDNMã:Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Thoat If Target.Column > 2 Then Exit Sub Cells(Target.Row, 3).Value = Cells(Target.Row, 1).Value * Cells(Target.Row, 2).Value Exit Sub Thoat: Cells(Target.Row, 3).Value = "data error" End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Goto Done:
Dim bEvt As Boolean
bEvt = Application.EnableEvents ' Lưu trang thái trước
Application.EnableEvents = False 'Ngưng hoạt động của các sự kiện
....
....Value=....
...
Done:
Application.EnableEvents = bEvt ' Hoàn trả trạng thái cũ
End Sub
Chào AnhTuanVNUNI đã viết:Worksheet_Change là sự kiện được chạy khi có sự thay đổi về giá trị trên các ô, trong VBA khi ta gán thuộc tính Value=... Chính vì thế nếu trong sự kiện này mà gán Value =.... là chúng ta đã buộc Excel chạy sự kiện Worksheet_Change liên tục nhiêù lần cho một vấn đề. Tôi thường làm theo một nguyên tắc an toàn sau:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Goto Done:
Dim bEvt As Boolean
bEvt = Application.EnableEvents ' Lưu trang thái trước
Application.EnableEvents = False 'Ngưng hoạt động của các sự kiện
....
....Value=....
...
Done:
Application.EnableEvents = bEvt ' Hoàn trả trạng thái cũ
End Sub
Bạn có thể nhập công thức này vào ô A2, sau đó copy xuốngtruong.japfa đã viết:Cám ơn các bác đã trợ giúp cho em.
Em có một vấn đề nữa lại phiền các bác chỉ giáo đây.
Các bác xem file đính kèm hộ em nhé.
NVT
Sub taoma()
Dim iRow As Integer
For iRow = 2 To Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row - 1
Cells(iRow, 1) = Format(Cells(iRow, 2), "#####") & "." & Cells(iRow, 3) & "." & Cells(iRow, 5)
Next
Cells(1, 1).Select
End Sub
Sao bạn không dùng công thức. Mình nghĩ công thức cũng đáp ứng được yêu cầu của bạn mà. Nhập công thức tại ô A2, rồi copy xuốngtruong.japfa đã viết:Cám ơn bác
Tuy nhiên bác chỉ giùm làm thế nào để nó chỉ tạo mã những dữ liệu vừa nhập vào?
Nếu không nó sẽ tính toán lại toàn bộ dữ liệu, sẽ tốn phí thời gian bác ạ!
NVT
Sub worksheet_change(ByVal target As Range)
If target.Column >= 2 And target.Column <= 3 And target.Row > 1 Then
If Cells(target.Row, 3) <> "" And Cells(target.Row, 3) <> Cells(target.Row - 1, 3) Then
Cells(target.Row, 5) = 1
Else: Cells(target.Row, 5) = Cells(target.Row - 1, 5) + 1
End If
Cells(target.Row, 1) = Format(Cells(target.Row, 2), "#####") & "." & Cells(target.Row, 3) & "." & Cells(target.Row, 5)
End If
End Sub
tedai đã viết:Sao bạn không dùng công thức. Mình nghĩ công thức cũng đáp ứng được yêu cầu của bạn mà. Nhập công thức tại ô A2, rồi copy xuống
=B2&"."&C2&"."&E2
TDN
minhlev đã viết:Bạn thử dùng code dưới đây xem (cái này mới học được ở trên GPE đấy, hay ra phết).
Mã:Sub worksheet_change(ByVal target As Range) If target.Column >= 2 And target.Column <= 3 And target.Row > 1 Then If Cells(target.Row, 3) <> "" And Cells(target.Row, 3) <> Cells(target.Row - 1, 3) Then Cells(target.Row, 5) = 1 Else: Cells(target.Row, 5) = Cells(target.Row - 1, 5) + 1 End If Cells(target.Row, 1) = Format(Cells(target.Row, 2), "#####") & "." & Cells(target.Row, 3) & "." & Cells(target.Row, 5) End If End Sub
Sub taoma()
Dim ARow, BRow, iRow As Integer
ARow = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
BRow = Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row - 1
For iRow = ARow To BRow
Cells(iRow, 1) = Format(Cells(iRow, 2), "#####") & "." & Cells(iRow, 3) & "." & Cells(iRow, 5)
Next
Cells(1, 1).Select
End Sub
minhlev đã viết:Bạn thử dùng code dưới đây xem (cái này mới học được ở trên GPE đấy, hay ra phết).
Mã:Sub worksheet_change(ByVal target As Range) If target.Column >= 2 And target.Column <= 3 And target.Row > 1 Then If Cells(target.Row, 3) <> "" And Cells(target.Row, 3) <> Cells(target.Row - 1, 3) Then Cells(target.Row, 5) = 1 Else: Cells(target.Row, 5) = Cells(target.Row - 1, 5) + 1 End If Cells(target.Row, 1) = Format(Cells(target.Row, 2), "#####") & "." & Cells(target.Row, 3) & "." & Cells(target.Row, 5) End If End Sub
[LEFT]Sub worksheet_change(ByVal target As Range)
If target.Column >= 1 And target.Column <= 3 And target.Row > 1 Then
If Cells(target.Row, 3) <> "" And Cells(target.Row, 3) <> Cells Then
....
End If
End Sub[/LEFT]
kienthuc2007 đã viết:làm chỉ em tính hàm sumif cần điều kiện như thế nào các bạn cho mình ví dụ cụ thể mình mới học excel thôi mình chỉ học lớp mầm mà!![]()
Cám ơn bạn! - Kết quả tốt.ThuNghi đã viết:Kết hợp thêm if(countif($E$7:$E7,$E7)=1,SUMIF($E$7:$E$21,E7,$F$7:$F$21),"")
nguyentuhp đã viết:Tôi cần một hàn SUM cho kết quả lên trên vùng đã chọn, bạn nào biết xin chỉ dùm nhé! Cảm ơn trước nhiều nhiều!
Có thể bạn là người mới, bạn hãy đọc và tìm hiểu theo đường link dưới đây sẽ giải đáp những thắc mắc của bạn:cos84 đã viết:Mong các anh chị giúp đỡ.
Thank you !!
HL7882 đã viết:Chào các a/c!
Em có dùng công thức excel để làm sổ sách, nhưng em ko hiểu lý do gì mà khi em dùng hàm sumif, từ sheet tập hợp dữ liệu KT sang sheet bảng CĐSPS thì số PS bị thiếu một số bút toán trong phần phát sinh trong kỳ của TK156, nhưng số dư CK thì lại đúng như trên bảng tổng hợp chi tiết tài khoản, trong khi đó ở bảng tổng hợp chi tiết tài khoản thì lại chạy ra đủ hết.
Mong các a/c chỉ giúp em.
Câu hỏi của bạn thật ấn tượng....Sorry, Chả hiểu gì hếtHL7882 đã viết:Chào các a/c!
Em có dùng công thức excel để làm sổ sách, nhưng em ko hiểu lý do gì mà khi em dùng hàm sumif, từ sheet tập hợp dữ liệu KT sang sheet bảng CĐSPS thì số PS bị thiếu một số bút toán trong phần phát sinh trong kỳ của TK156, nhưng số dư CK thì lại đúng như trên bảng tổng hợp chi tiết tài khoản, trong khi đó ở bảng tổng hợp chi tiết tài khoản thì lại chạy ra đủ hết.
Mong các a/c chỉ giúp em.
Bạn copy trong TKGHINO (ví dụ Cột E) phần có hiện 1111 và dán vào A7, sau đó tại A7 bạn bỏ đi 1 ký tự thành 111.hanhdh072007 đã viết:Đúng ! đúng rồi đó bạn SALAM, mà sao nó lại ko dc, tui buồn quá đi thui.
Bạn có cao kiến gì trong vụ này không ?
Khi làm file XNT mình khuyên bạn như sau :jacksameson đã viết:Mình đang quảng lý 4 kho hàng ở 4 nơi khác nhau. để tiện cho việc báo cáo nhập xuất tồn được nhanh ở các kho. Mình sử dụng hàm sumif có điều kiện nhưng không thể thiết lập được, nhờ các bạn giúp mình thiết lập ct với. Trong bảng ễcl minh sẽ tạo 5 sheet: sheet 1: N-X: hàng ngày cập nhật chi tiết vào như mã hàng, Mã kho, số lượng nhập xuất. Sheet 2: KHO_A: thống kê tổng nhập xuất tồn theo từng mã hàng lấy dữ liệu từ sheet 1: tương tự là sheet KGHO_B, C, D.
mình muốn nếu nhập xuất thuộc kho nào thì sẽ trả kết quả về kho tương ứng với mã kho đã được nhập trong sheet chi tiết.
Xin chào các bạn !BNTT đã viết:Hàm SUMIF: SUMIF(vùng_chọn, điều_kiện, vùng_cộng)
Cụ thể với bài của bạn, công thức tại D18:G20 là (bạn chọn hết D18:G20, gõ công thức y như dưới đây, nhấn Ctrl-Enter)
SUMIF($C$7:$G$13, $B18, D$7Ví dụ, tại F19, công thức trên sẽ là: SUMIF($C$7:$G$13, $B19, F$7:F$13)$13)
Nghĩa là: Đi dò trong khối cell C7:G13, hễ thấy đứa nào giống cái ở B19 (Nha Trang) thì cộng hết những giá trị nằm cùng hàng với nó ở bên khối cell F7:F13, và kết quả là 100,000.
Nói thêm chút, cái bảng tính của bạn có vấn đề đấy.
Thứ nhất, những con số tiền ăn, tiền khách sạn, v.v... của bạn (kết quả của hàm VLOOKUP) toàn là text chứ không phải số, nên nó sẽ không cộng trừ chi được. Có nhiều cách giải quyết, nhưng lẹ nhất là bạn sửa công thức ở D7:G13, cho tụi nó nhân với 1 (= VLOOKUP(....) * 1) hết, thì nó sẽ ra số (bảng tính của bạn không thể định dạng lại theo kiểu số đâu). Bạn bị như vậy là do trong Bảng phụ của bạn có cái chữ "đ" (đồng) nên Excel hiểu tất cả bảng phụ là text chứ không phải là số. Lần sau bạn đừng để cái đơn vị tính đó vào làm gì.
Thứ hai, công thức đếm số lần ở C18:C20 của bạn: COUNTIF(C7:C13, B18) là không chính xác, mà phải là COUNTIF($C$7:$C$13, B18). May cho bạn là chỉ có Đà Lạt, Nha Trang và Huế và 3 ô trên cùng (C7, C8, C9) không trùng nhau, chứ nếu mà nhiều hơn, và lỡ mà trong bảng dò có trùng nhau thì bạn sẽ có kết quả sai. Nhớ dùng địa chỉ tuyệt đối cho bảng dò, còn không thì đặt luôn cho nó một cái Name.
Thân.
Bạn xem thêm: Hàm SUMIF
tôi đã thử theo cách chỉ dẫn của bạn.Nhưng tại sao mãi không được bạn ơi.Bạn up bài giải giúp mình nhé.BNTT đã viết:Hàm SUMIF: SUMIF(vùng_chọn, điều_kiện, vùng_cộng)
Cụ thể với bài của bạn, công thức tại D18:G20 là (bạn chọn hết D18:G20, gõ công thức y như dưới đây, nhấn Ctrl-Enter)
SUMIF($C$7:$G$13, $B18, D$7Ví dụ, tại F19, công thức trên sẽ là: SUMIF($C$7:$G$13, $B19, F$7:F$13)$13)
Nghĩa là: Đi dò trong khối cell C7:G13, hễ thấy đứa nào giống cái ở B19 (Nha Trang) thì cộng hết những giá trị nằm cùng hàng với nó ở bên khối cell F7:F13, và kết quả là 100,000.
Nói thêm chút, cái bảng tính của bạn có vấn đề đấy.
Thứ nhất, những con số tiền ăn, tiền khách sạn, v.v... của bạn (kết quả của hàm VLOOKUP) toàn là text chứ không phải số, nên nó sẽ không cộng trừ chi được. Có nhiều cách giải quyết, nhưng lẹ nhất là bạn sửa công thức ở D7:G13, cho tụi nó nhân với 1 (= VLOOKUP(....) * 1) hết, thì nó sẽ ra số (bảng tính của bạn không thể định dạng lại theo kiểu số đâu). Bạn bị như vậy là do trong Bảng phụ của bạn có cái chữ "đ" (đồng) nên Excel hiểu tất cả bảng phụ là text chứ không phải là số. Lần sau bạn đừng để cái đơn vị tính đó vào làm gì.
Thứ hai, công thức đếm số lần ở C18:C20 của bạn: COUNTIF(C7:C13, B18) là không chính xác, mà phải là COUNTIF($C$7:$C$13, B18). May cho bạn là chỉ có Đà Lạt, Nha Trang và Huế và 3 ô trên cùng (C7, C8, C9) không trùng nhau, chứ nếu mà nhiều hơn, và lỡ mà trong bảng dò có trùng nhau thì bạn sẽ có kết quả sai. Nhớ dùng địa chỉ tuyệt đối cho bảng dò, còn không thì đặt luôn cho nó một cái Name.
Thân.
Bạn xem thêm: Hàm SUMIF