Lập công thức tính tổng con cho từng phân đoạn (1 người xem)

Liên hệ QC

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

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Các bạn mở file đính kèm lên xem...
Cấu trúc dử liệu dạng này tôi thấy có khá nhiều người sử dụng, hậu quả dẩn đến là ko tài nào SUMIF dc theo Mã...
Bài toán này dùng vòng lập For thì quá dể.. quét cái rẹt ra ngay... nhưng các bạn nghĩ xem nếu dùng công thức, có cách nào thiết lập công thức 1 cách tổng quát cho cột C ko? Cụ thể trong file, dử liệu tổng sẽ xuất hiện tại C6, C11 và C16 , còn các cell khác sẽ cho rổng
ANH TUẤN
 

File đính kèm

Trong trường hợp tương tự như bài của bác, em có thêm 1 cột số thứ tự vào và dùng hàm sumproduct.
 

File đính kèm

Em làm theo hướng như trong bài nhưng lại cột phụ bác xem thử xem.
 

File đính kèm

Cách của bạn minhlev vẫn chưa ổn ở chổ:
1> Tốn công gõ cột phụ A
2> Và nếu đã tốn công như thế thôi thì kéo fill cột TÊN cho đầy đủ rồi dùng SUMIF có phải thuận tiện hơn ko?
-------------------------------
Cách làm của Salam giống 90% cach tôi đang làm... Bỏ cột phụ chẳng khó khăn gì, chẳng hạn đặt name:
VT=IF($A$6:$A$22=0,"",ROW($A$6:$B$22))
rồi dùng công thức:
=IF(A6="","",SUM(INDIRECT("B"&SMALL(VT,COUNTA($A$6:A6))&":B"&SMALL(VT,COUNTA($A$6:A6)+1)-1)))
--------------------------------
Thật sự tôi cũng đã nghĩ dc cách làm trong điều kiện tổng quát nhất, nhưng qua nhận xét thì thấy file nhiều dử liệu (khoảng 1000 dòng) thì tốc độ tính toán chậm quá
VBA tôi chưa làm nhưng tôi nghĩ là.. quá dể... Dùng FOR quét từ dưới lên, cộng dồn cột KL lại, đến khi gặp cột TÊN có dử liệu thì điền giá trị cộng dồn vào cột TỔNG, cho biến cộng dồn =0, lại tiếp tục quét..và cứ thế.. cứ thế đến hết...
Dùng công thức ko biết có ai còn cách khác làm cho tốc độ tính toán tăng lên dc ko nhỉ?
ANH TUẤN
 
Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
Thật sự tôi cũng đã nghĩ dc cách làm trong điều kiện tổng quát nhất, nhưng qua nhận xét thì thấy file nhiều dử liệu (khoảng 1000 dòng) thì tốc độ tính toán chậm quá

Công thức trên là khá tổng quát đấy chứ, còn cách khác ah a???

anhtuan1066 đã viết:
VBA tôi chưa làm nhưng tôi nghĩ là.. quá dể... Dùng FOR quét từ dưới lên, cộng dồn cột KL lại, đến khi gặp cột TÊN có dử liệu thì điền giá trị cộng dồn vào cột TỔNG, cho biến cộng dồn =0, lại tiếp tục quét..và cứ thế.. cứ thế đến hết...
Dùng công thức ko biết có ai còn cách khác làm cho tốc độ tính toán tăng lên dc ko nhỉ?
ANH TUẤN

sao a không làm lun nhỉ, nhưng nên làm hàm (function) cho nó hay, vì nếu Sub thì thay đổi số liệu phải chạy lại
 
anhtuan1066 đã viết:
Các bạn mở file đính kèm lên xem...
Cấu trúc dử liệu dạng này tôi thấy có khá nhiều người sử dụng, hậu quả dẩn đến là ko tài nào SUMIF dc theo Mã...
Bài toán này dùng vòng lập For thì quá dể.. quét cái rẹt ra ngay... nhưng các bạn nghĩ xem nếu dùng công thức, có cách nào thiết lập công thức 1 cách tổng quát cho cột C ko? Cụ thể trong file, dử liệu tổng sẽ xuất hiện tại C6, C11 và C16 , còn các cell khác sẽ cho rổng
ANH TUẤN

Tối hôm qua mình đã nghĩ rất nhiều về vần đề mà Anhtuan đặt ra, thật nhức đầu về những công thức và cuối cùng mình cũng đúc kết được rằng :

Đừng dùng sự phức tạp để giải quyết những vần đề đơn giản
Hãy kết hợp những gì đơn giản để hóa giải vấn đề phức tạp.
 

File đính kèm

Tigertiger ơi, cách làm bằng VBA thì tôi cũng có 1 bài tương tự tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8641
Nhưng tôi nghỉ ko nên tạo Function... vì nếu thế chẳng hóa ra lại trở về như củ.. tức chỉ lấy giá trị có vài cell mà phải làm công thức cho cả cột... nên tôi vẫn theo quan điểm:
1> Nếu dùng VBA thì tôi sẽ làm 1 sub chứ ko dùng Function
2> Nếu dùng công thức thì phải đảm bảo tốc độ tính toán nhanh và tổng quát cho mọi trường hợp
Tổng quát phải như vầy đây:
-Vì bảng tính của mỗi người có khác nhau (cột C của ta chưa chắc là cột C của người khác)... Vậy nếu làm bài toán này ta nên có 1 chổ nào đó cho mọi người khai báo rằng : "Tôi muốn tính tổng cho cột ... ??? theo cột.... ???""
Tóm lại: 1 công thức đúng với mọi bảng tính, tốc độ nhanh.. đó mới là vấn đề...
Vậy chúng ta thử nghiên cứu theo hướng này xem... Còn cách làm đơn giãn nhất đến thời điểm hiện giờ có lẽ là cách mà bạn hoangdanh282vn đang làm...
Mến
ANH TUẤN
 
Tốt nhất là dùng cột phụ để công thức đơn giản và dễ hiểu thì hay nhất.
 
anhtuan1066 đã viết:
Tigertiger ơi, cách làm bằng VBA thì tôi cũng có 1 bài tương tự tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8641
Nhưng tôi nghỉ ko nên tạo Function... vì nếu thế chẳng hóa ra lại trở về như củ.. tức chỉ lấy giá trị có vài cell mà phải làm công thức cho cả cột... nên tôi vẫn theo quan điểm:
1> Nếu dùng VBA thì tôi sẽ làm 1 sub chứ ko dùng Function
Tổng quát phải như vầy đây:
-Vì bảng tính của mỗi người có khác nhau (cột C của ta chưa chắc là cột C của người khác)... Vậy nếu làm bài toán này ta nên có 1 chổ nào đó cho mọi người khai báo rằng : "Tôi muốn tính tổng cho cột ... ??? theo cột.... ???""
Tóm lại: 1 công thức đúng với mọi bảng tính, tốc độ nhanh.. đó mới là vấn đề...

ANH TUẤN
Tại sao không phải là 1 Function mà lại là một Sub hả bác ??? Function thì sẽ đúng cho mọi trường hợp mà, chỉ cần chọn khối là xong.
Dùng VBA thì lại rất nhanh rồi, chỉ cần lặp khoảng chục lần là thoát thôi mà.
Như vậy mới đúng với cái "Tóm lại" của bác.

PHP:
Function TC(MangMa As Range, MangSo As Range) As Double
    Application.Volatile (False)
    Dim i As Integer
    If MangMa.Rows.Count <> MangSo.Rows.Count Then Exit Function
    If MangMa(1) = "" Then Exit Function
    TC = MangSo(1)
    For i = 2 To MangMa.Rows.Count
        If MangMa(i) = "" Then
            TC = TC + MangSo(i)
        Else
            Exit Function
        End If
    Next
End Function




Thân!
 

File đính kèm

salam đã viết:
Em làm theo hướng như trong bài nhưng lại cột phụ bác xem thử xem.
Sao ta không dùng =IF(A6<>"",ROW(A6),"")
để thay thế cho =IF(A6=0,"",MATCH(A6,$A$1:$A$22,0))
như thế sẽ gọn và nhanh hơn chứ nhỉ
 
anhtuan1066 đã viết:
He... he... ý tôi nói là: nếu phải chọn giữa UDF và công thức thường thì tôi sẽ chọn công thức thường... vì đàng nào cũng phải tốn công thức cho các cell rổng (vẫn phải tốn dung lượng)...
Còn nếu như phải chọn giữa công thức và VBA thì tôi sẽ chọn VBA, nhưng sẽ làm thành 1 Sub đễ khi cần thì chạy chứ ko xài UDF trong trường hợp này....
ANH TUẤN
Nếu muốn sự linh hoạt và cho mọi trường hợp thì chỉ có UDF mới làm được, Sub sao là làm được bác ???

Còn ý bác muốn dùng công thức thường, và nếu dùng VBA thì chỉ dùng Sub thì . . tùy bác.

Dùng lượng khi dùng UDF đâu có tăng lên nhiều đâu.
Còn nếu vì vấn đề dung lượng thì bác nên dùng UDF kết hợp với Sub thì sẽ tạo ra sự linh hoạt tuyệt vời, lại không bị tăng dữ liệu.

(Bác xem lại bài trên của em nhé)

Thân!
 
Ah... vấn đề tăng dung lượng nghĩa là tăng khi sử dụng ấy... tức khi ta điền dấu = vào cell thì cell đó phải nhận 1 giá tri nào đó, đương nhiên dung lượng cũng từ đó mà tăng... chứ tôi ko nói đoạn code làm tăng dung lượng
Vậy khi ta dùng UDF cho 100 cell với công thức = cái gì đó (....) thì nó đâu khác gì với việc ta dùng công thức thường đâu nhỉ?
Sub tất nhiên cũng sẽ làm dc trong trường hợp tổng quát nhất, chẳng hạn thêm thằng em InputBox cho phép chọn vùng, đơn giãn vậy thôi... nhưng bảo đãm là dung lượng tăng rất ít do cell chỉ chứa Value trên 1 vài vùng cụ thể nào đó chứ ko phải toàn bộ cột
he... he...
--------------
Nói thế nào cho mọi người hiểu nhỉ? Đại khái nếu cần điền giá trị vào toàn bộ cột C ko chừa em nào thì khi ấy dùng Function tôi chẳng có ý kiến... đàng này, trong file ví dụ của tôi chỉ cần điền 3 cell lại phải tốn công thức cho toàn bộ cột C... Ý tôi nói "tốn" là vậy đấy!
ANH TUẤN
 
Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
Ah... vấn đề tăng dung lượng nghĩa là tăng khi sử dụng ấy... tức khi ta điền dấu = vào cell thì cell đó phải nhận 1 giá tri nào đó, đương nhiên dung lượng cũng từ đó mà tăng... chứ tôi ko nói đoạn code làm tăng dung lượng
Vậy khi ta dùng UDF cho 100 cell với công thức = cái gì đó (....) thì nó đâu khác gì với việc ta dùng công thức thường đâu nhỉ?
Sub tất nhiên cũng sẽ làm dc trong trường hợp tổng quát nhất, chẳng hạn thêm thằng em InputBox cho phép chọn vùng, đơn giãn vậy thôi... nhưng bảo đãm là dung lượng tăng rất ít do cell chỉ chứa Value trên 1 vài vùng cụ thể nào đó chứ ko phải toàn bộ cột
he... he...
--------------
Nói thế nào cho mọi người hiểu nhỉ? Đại khái nếu cần điền giá trị vào toàn bộ cột C ko chừa em nào thì khi ấy dùng Function tôi chẳng có ý kiến... đàng này, trong file ví dụ của tôi chỉ cần điền 3 cell lại phải tốn công thức cho toàn bộ cột C... Ý tôi nói "tốn" là vậy đấy!
ANH TUẤN

Vậy thì cứ làm SUB cho nó . . nhanh bác ạ.

Mấy cái trường hợp đơn giản này, nói thế nào là nhanh hay chậm thì cũng vô cùng lắm. Vì đơn giản thường gắn với sự tiện lợi.

Thân!
 
anhtuan1066 đã viết:
Nói thế nào cho mọi người hiểu nhỉ? Đại khái nếu cần điền giá trị vào toàn bộ cột C ko chừa em nào thì khi ấy dùng Function tôi chẳng có ý kiến... đàng này, trong file ví dụ của tôi chỉ cần điền 3 cell lại phải tốn công thức cho toàn bộ cột C... Ý tôi nói "tốn" là vậy đấy!
ANH TUẤN

Nếu thế thì chỉ dùng công thức UDF cho các ô cần tính thôi, bằng cách filter -> điền công thức UDF cho các ô đó - đơn giản vậy thôi atuan
 
He... he... Nghiên cứu đã có kết quả... Xin đưa lên giãi pháp cực kỳ đơn giản:
Cách 1: Dùng VBA như tôi đã nói là dùng vòng lập For quét ngược từ dưới lên... Cái này quá dễ ai cũng biết, chắc ko cần nói nhiều... (Xem tại sheet CT02 của file đính kèm)
Cách 2: Dùng công thức... Cũng theo thuật toán quét ngược từ dưới lên giống như cách dùng VBA, chính vì thế nếu các bạn nhìn công thức tại cell đầu tiên sẽ cãm giác hơi khó hiểu... Hảy chuyển xuống cell cuối cùng xem nhé... Chỉ là SUM bình thường, ko có cột phụ, ko có name... Tốc độ nó mà ko nhanh thì thật là chuyện lạ đấy!... ha.. ha... (Xem giải pháp tại sheet CT01 của file đính kèm)
Tin chắc với giải pháp dùng công thức này thì ai ai cũng hiểu, vì nó.. quá.. quá đơn giãn...
ANH TUẤN
 

File đính kèm

Cải tiến bài toán thêm 1 bước, cho phép đặt kết quả trực tiếp vào cột thành tiền (vì tôi biết cũng có 1 số bạn có ý muốn bố trí dử liệu theo kiểu vậy)... Xem tại Sheet CT03 (cái này dùng công thức thì thua.. cả UDF cũng thua)
----------------------
Nhân đây cũng xin hỏi: Thay vì tính tổng, ta có giãi pháp nào cho việc trích xuất dử liệu đối với dạng cấu trúc dử liệu này ko? Ví dụ cần lấy ra toàn bộ dử liệu thuộc số phiếu N01?
ANH TUẤN
 

File đính kèm

File trên vẩn còn 1 nhược điểm... Nếu tính tổng mà cho vào cột thành tiền luôn rồi lại chạy Sub tính tổng lần nữa sẽ cho kết quả sai (vì nó đã cộng dồn luôn cả kết quả lần trước...
Cải tiến mới, tránh dc sai sót đáng tiếc ấy!
ANH TUẤN
 

File đính kèm

Viết VBA như anh Mr_Okebad và anh anhtuan1066 thì kết quả ra thật tốt rồi. Em mới vào nhìn thấy các anh làm cái gì cũng nhanh và gọn quá. Cũng muốn học VBA một chút để phục vụ trong công việt. Rất mong các anh hướng dẫn dùm và cho em mấy địa chỉ. Em đã đọc bài hướng dẫn của anh Hưởng rồi. Nhưng đê viết được bài như các anh chắc còn dài lắm. Cảm ơn các anh rất nhiều !!!
 
Lần chỉnh sửa cuối:
Viết VBA như anh Mr_Okebad và anh anhtuan1066 thì kết quả ra thật tốt rồi. Em mới vào nhìn thấy các anh làm cái gì cũng nhanh và gọn quá. Cũng muốn học VBA một chút để phục vụ trong công việt. Rất mong các anh hướng dẫn dùm và cho em mấy địa chỉ. Em đã đọc bài hướng dẫn của anh Hưởng rồi. Nhưng đê viết được bài như các anh chắc còn dài lắm. Cảm ơn các anh rất nhiều !!!
Dể lắm... Nếu bạn ở Sài Gòn thì chạy ra Số 10 đường Bàu Cát, P.13, Quận Tân Bình để mua sách!
Thông tin chi tiết tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=9294
Bảo đãm trong vòng 1 năm vừa đọc sách vừa đều đều lên GPE, bạn sẽ trở thành cao thủ chẳng mấy hồi...
ANH TUẤN
 
Em đang học ngoài Hà Nội, cũng hay chạy đi đi lại lại các tỉnh phía bắc. Em chưa vào trong đó lần nào. Anh ở trong đó hay ngoài này. Em cũng đã đọc một chút nhưng thấy cũng khó quá, một mình ngồi cũng thấy nản, mấy bữa nay được ở nhà vào vô GPE thấy các anh nói chuyện, hướng dẫn mới thấy ham trở lại (Trước em cũng đã tự học nhưng lại nản). Rất mong được sự giúp đỡ của các anh, có gì không phải mong các anh bỏ quá.
Xin chân thành cám ơn !!!
 
Với file Tongcon_04 tôi có 1 cách khác dùng công thức khá đơn giản, đồng thời có thể đặt trực tiếp công thức này vào ngay vùng dử liệu, (tức cột thành tiền)
 

File đính kèm

Với file Tongcon_04 tôi có 1 cách khác dùng công thức khá đơn giản, đồng thời có thể đặt trực tiếp công thức này vào ngay vùng dử liệu, (tức cột thành tiền)
Em có một cách khác không cần dùng công thức hay VBA chi cả! Theo dữ liệu file Tongcon_04, em chọn (chiếu sáng) vùng B8:B201, ấn Ctrl+G -->chọn Special -->chọn Blank--->ok
Sau đó tại ô activecell B9 gõ vào = B8, sau đó Ctrl+Enter. Dán cứng cột B lại. Sau đó dùng chức năng Subtotal sẵn có của Excel.

Thế mới nói, cấu trúc nhập liệu ảnh hưởng lớn đến việc lập công thức như thế nào! --=0
 
Một đề tài rất hay, có thể áp dụng cho bảng khối lượng của dự toán công trình, có lần mình đã đưa lên diễn đàn nhưng chưa có đáp án, nó cũng giống như tổng con ở đây; mình xin mạn phép gửi lại file mong được giúp đỡ.
 

File đính kèm

Chưa có cao thủ nào ra tay nghĩa hiệp giúp với chứ!
Đây cũng là 1 trường hợp tổng con trong ứng dụng, mình lại dốt VBA không làm được, chỉ có ý tưởng mong mọi người giúp sức.
Thanks!
 
Chưa có cao thủ nào ra tay nghĩa hiệp giúp với chứ!
Đây cũng là 1 trường hợp tổng con trong ứng dụng, mình lại dốt VBA không làm được, chỉ có ý tưởng mong mọi người giúp sức.
Thanks!

Vấn đề của bạn không khó, chỉ có điều cách bố trí dữ liệu của bạn chưa hợp lý nên làm khó bạn thôi.
Bạn chỉ cần thêm một cột nhập liệu để phân biệt đâu là vùng 1, đâu là vùng 2... , Như thế công việc sẽ rất đơn giản và dễ làm.
Như file bạn gửi ở trên thì thật khó để làm và để hiểu.
 
Bạn Hoàng Danh ạ, mình thích làm dự toán trên Excel vì dễ chỉnh sửa theo ý mình, nhưng lại dốt VBA, muốn có một tiện ích thuận lợi, mong Hoàng Danh và các bạn giúp. File là ý tưởng và đã có sử dụng thủ công để làm một số dự toán nhỏ.
Cảm ơn trước.
 
Vấn đề của bạn không khó, chỉ có điều cách bố trí dữ liệu của bạn chưa hợp lý nên làm khó bạn thôi.
Bạn chỉ cần thêm một cột nhập liệu để phân biệt đâu là vùng 1, đâu là vùng 2... , Như thế công việc sẽ rất đơn giản và dễ làm.
Như file bạn gửi ở trên thì thật khó để làm và để hiểu.

File này là bảng khối lượng của dự toán xây dựng, mình dùng excel nhập trực tiếp và bảng tính, các ô tô màu là số liệu và diễn giải người dùng nhập, các phần khác mình ghi một macro để nó tự lấy dữ liệu ở một file khác bằng hàm volookup kết hợp với các hàm tình toán và điền dữ liệu cần thiết vào. Nhưng mình đang bí không giải quyết được:
1. Tính tổng con và đền hàng Tổng con cho từng phần khi hết phần công tác.
2. Khi in bàng khối lượng, thì chỉ có khối lượng được in như sheet "TLuong".
3. Khi in bàng đơn giá dự toán thì chỉ phần đơn giá được in như sheet "DonGia"
4. Còn nhiều ... nhưng trước mắt như vậy đã.
Mong được giúp đỡ.
Very Thanhks!
 
Không ai chịu ra tay hết sao?

Công thức ở cột K, Sheet DuToan có thể sửa lại:

PHP:
K8 =IF(G8=0;".";ROUND(IF(AND(H8=0;I8=0);G8*J8;IF(AND(H8=0;J8=0);G8*I8;IF(AND(I8=0;J8=0);G8*H8;IF(H8=0;G8*I8*J8;IF(I8=0;G8*H8*J8;IF(J8=0;G8*H8*I8;G8*H8*I8*J8))))));3))
thành

PHP:
K8 = ROUND(G8*IF(H8=0;1;H8)*IF(I8=0;1;I8)*IF(J8=0;1;J8);3)

Hoặc UDF :

PHP:
Function CKien(SoCK As Double, Dai As Double, Rong As Double, Cao As Double) As Double
    If SoCK = 0 Then Exit Function
    If Dai = 0 Then Dai = 1
    If Rong = 0 Then Rong = 1
    If Cao = 0 Then Cao = 1
    CKien = Round(SoCK * Dai * Rong * Cao, 3)
End Function

Còn vấn đề của bạn :
1. Tính tổng con và đền hàng Tổng con cho từng phần khi hết phần công tác.

Bạn phải cho "máy" biết có dấu hiệu gì đó để phân biệt đâu là sự khác nhau giữa 2 vùng liền kề (giống như hoangdanh nói), như thế mới làm được. Chứ như File của bạn thì . . chịu.

2. Khi in bàng khối lượng, thì chỉ có khối lượng được in như sheet "TLuong"

Bảng Khối lượng là bảng nào vậy bạn ??

3. Khi in bàng đơn giá dự toán thì chỉ phần đơn giá được in như sheet "DonGia"

Bảng Đơn giá dự toán là bảng nào vậy bạn ???

Các bảng biểu mà bạn nêu ra thì phải có mẫu cho mọi người xem chứ ??

Thân!
 
Một đề tài rất hay, có thể áp dụng cho bảng khối lượng của dự toán công trình, có lần mình đã đưa lên diễn đàn nhưng chưa có đáp án, nó cũng giống như tổng con ở đây; mình xin mạn phép gửi lại file mong được giúp đỡ.

File này là bảng khối lượng của dự toán xây dựng, mình dùng excel nhập trực tiếp và bảng tính, các ô tô màu là số liệu và diễn giải người dùng nhập, các phần khác mình ghi một macro để nó tự lấy dữ liệu ở một file khác bằng hàm volookup kết hợp với các hàm tình toán và điền dữ liệu cần thiết vào. Nhưng mình đang bí không giải quyết được:
1. Tính tổng con và đền hàng Tổng con cho từng phần khi hết phần công tác.
2. Khi in bàng khối lượng, thì chỉ có khối lượng được in như sheet "TLuong".
3. Khi in bàng đơn giá dự toán thì chỉ phần đơn giá được in như sheet "DonGia"
4. Còn nhiều ... nhưng trước mắt như vậy đã
.
Mong được giúp đỡ.
Very Thanhks!

Không ai chịu ra tay hết sao?

Nói thật bạn đừng giận nhé: Khi bạn cần hỏi vấn đề gì, cần được giúp những gì thì bạn phải nói rõ ràng, cụ thể thì anh em mới có thể giúp được

Thông cảm vì không phải ai nhìn vào file bạn gửi cũng hiểu được tính năng, tác dụng, cách hoạt động ... như bạn nhìn vào file đó

VD nhu trong file đính kèm bạn gửi: bạn muốn tính thế nào? chỗ nào cần đặt kết quả tính, lấy số liệu ở đâu để tính, cách tính thế nào ..... có như vậy thì anh em mói có thể giúp được chứ
 
Các bạn mở file đính kèm lên xem...
Cấu trúc dử liệu dạng này tôi thấy có khá nhiều người sử dụng, hậu quả dẩn đến là ko tài nào SUMIF dc theo Mã...
Bài toán này dùng vòng lập For thì quá dể.. quét cái rẹt ra ngay... nhưng các bạn nghĩ xem nếu dùng công thức, có cách nào thiết lập công thức 1 cách tổng quát cho cột C ko? Cụ thể trong file, dử liệu tổng sẽ xuất hiện tại C6, C11 và C16 , còn các cell khác sẽ cho rổng
ANH TUẤN
Bạn thử sử dụng công thức này xem: C16 = if(A16=""," ",SUM(B16:INDEX(A16:B27,MATCH("*",A17:A27,0),2))), mọi người góp ý dùm nha!
 
"Cách 2: Dùng công thức... Cũng theo thuật toán quét ngược từ dưới lên giống như cách dùng VBA, chính vì thế nếu các bạn nhìn công thức tại cell đầu tiên sẽ cãm giác hơi khó hiểu... Hảy chuyển xuống cell cuối cùng xem nhé... Chỉ là SUM bình thường, ko có cột phụ, ko có name... Tốc độ nó mà ko nhanh thì thật là chuyện lạ đấy!... ha.. ha... (Xem giải pháp tại sheet CT01 của file đính kèm)
Tin chắc với giải pháp dùng công thức này thì ai ai cũng hiểu, vì nó.. quá.. quá đơn giãn..."
Mình đọc bài này lâu rồi, vận dụng cách này tới giờ được 2 tháng dữ liệu file của mình lên hơn 5MB, và dòng nhập liệu lên đến hơn 1000 dòng. Mình bắt đầu cảm thấy tốc độ chậm dần đều rồi, vì tính tổng quét ngược từ dưới lên như thế sẽ làm cho việc tính toán chậm đi. Mà trong khi đó máy tính của mình ở loại tốc độ cao đấy.
Còn Cách 1 thì mình không biết vận dụng vì mình dùng Openffice 3 (vừa tiết kiệm vừa tránh cơ quan kiểm tra)
Có cách nào dùng công thức mà làm cho tốc độ tính nhanh hơn không? Hoặc bạn nào giúp mình làm VBA bằng Open Office được không?
Cảm ơn các bạn nhiều!
 
"Cách 2: Dùng công thức... Cũng theo thuật toán quét ngược từ dưới lên giống như cách dùng VBA, chính vì thế nếu các bạn nhìn công thức tại cell đầu tiên sẽ cãm giác hơi khó hiểu... Hảy chuyển xuống cell cuối cùng xem nhé... Chỉ là SUM bình thường, ko có cột phụ, ko có name... Tốc độ nó mà ko nhanh thì thật là chuyện lạ đấy!... ha.. ha... (Xem giải pháp tại sheet CT01 của file đính kèm)
Tin chắc với giải pháp dùng công thức này thì ai ai cũng hiểu, vì nó.. quá.. quá đơn giãn..."
Mình đọc bài này lâu rồi, vận dụng cách này tới giờ được 2 tháng dữ liệu file của mình lên hơn 5MB, và dòng nhập liệu lên đến hơn 1000 dòng. Mình bắt đầu cảm thấy tốc độ chậm dần đều rồi, vì tính tổng quét ngược từ dưới lên như thế sẽ làm cho việc tính toán chậm đi. Mà trong khi đó máy tính của mình ở loại tốc độ cao đấy.
Còn Cách 1 thì mình không biết vận dụng vì mình dùng Openffice 3 (vừa tiết kiệm vừa tránh cơ quan kiểm tra)
Có cách nào dùng công thức mà làm cho tốc độ tính nhanh hơn không? Hoặc bạn nào giúp mình làm VBA bằng Open Office được không?
Cảm ơn các bạn nhiều!
Mình nghĩ các công thức tính tổng con như trình bày ở trên chỉ là những công thức thường nên dử liệu cở 1000 dòng đổ lại không thể làm bảng tính chậm được... Rất có thể trong file của bạn còn có các công thức khác (dùng mãng) hoặc 1 vài nguyên nhân khác nữa...
Vậy bạn có thể nén file lại rồi đưa lên đây cho mọi người tham khảo không?
 
File của mình >5MB nên mình không biết cách upload lên, đành phải dùng cái Megaupload.
http://www.megaupload.com/?d=VYZOG1IN
Xin mọi người cho ý kiến làm sao để file chạy nhanh hơn. Mình dùng OpenOffice3.0
Cảm ơn mọi người!
 
File đó đây mọi người. Phải công nhận là nặng thiệt đó. BangTK.xls Thân.
 
Lần chỉnh sửa cuối:
File của mình >5MB nên mình không biết cách upload lên, đành phải dùng cái Megaupload.
http://www.megaupload.com/?d=VYZOG1IN
Xin mọi người cho ý kiến làm sao để file chạy nhanh hơn. Mình dùng OpenOffice3.0
Cảm ơn mọi người!
Tôi đã xem file...
File của bạn năng là gì dử liệu và công thức quá nhiều chứ có phải nguyên nhân do công thức tính tổng con mà ra đâu...
Không tin bạn xóa mấy công thức tính tổng con đi, tôi nghĩ nó vẫn nặng như thường
Vì không chuyên ngành nên nhìn vào file bạn chẳng biết phải sửa thế nào nữa (có lẽ nên bố trí lại dử liệu cho hợp lý hơn chăng?)
 
Bố trí dữ liệu cho hợp lý là sao? Phải chăng ghép mấy cái sheet vào làm một à? Mình không có kinh nghiệm trong việc tính toán đến việc file nặng đến thế và tại sao lại chạy chậm đi như vậy? Chỉ là bảng tính thống kê không thôi thì có lẽ chậm cũng không sao nhưng mình áp dụng nó để làm việc hàng ngày, nhiều lúc vội mà vẫn phải đợi tới 30s, 40s, cảm thấy bực mình. Nếu viết bằng VBA thì có nhanh hơn không các bạn nhỉ?
 
Bố trí dữ liệu cho hợp lý là sao? Phải chăng ghép mấy cái sheet vào làm một à? Mình không có kinh nghiệm trong việc tính toán đến việc file nặng đến thế và tại sao lại chạy chậm đi như vậy? Chỉ là bảng tính thống kê không thôi thì có lẽ chậm cũng không sao nhưng mình áp dụng nó để làm việc hàng ngày, nhiều lúc vội mà vẫn phải đợi tới 30s, 40s, cảm thấy bực mình. Nếu viết bằng VBA thì có nhanh hơn không các bạn nhỉ?
Cái này tôi không dám chắc ăn lắm... nhưng có thể khẳng định nếu dùng VBA thì bạn khỏi cần công thức nào, do đó hỏng có cái gì cần tính toán trong file cả (chỉ tính 1 lần khi nào ta cần)
Có điều do tôi không phải chuyên ngành, nhìn vào file bạn như trời 30 ấy.. chẳng biết đường nào mà sửa
Việc bố trí dử liệu như thế nào là hợp lý cũng rất khó nói... Ở nước ngoài có dạy vụ này, còn ở ta thì chẳng thấy đề cập đến (chỉ công thưc.. công thức.. và công thức) ---> Nói chung có thể ngắn gọn rằng: Hợp lý nghĩa là dể dàng truy xuất khi cần thiết ---> cũng gần giống việc bạn sắp xếp đồ dùng trong nhà của bạn thôi ---> Đương nhiên nhà ai người nấy biết
Hy vọng các thành viên khác có lòng tốt và cùng chuyên ngành với bạn sẽ quan tâm giúp đở cho bạn!
Nói riêng: Nhìn bạn đếm tiền xẹt xẹt thấy mê quá... hỏng ấy "mướn" đi... như ThuNghi hay ca_dafi chẳng hạn
 
Nhờ các bạn tham khao cho, liệu có cách nào làm cho file chạy nhanh hơn không?
Bố trí lại dữ liệu cho hợp lý, bằng cách nào đây? Chuyển mấy sheet ghộp vào làm 1 sheet à?
Vì nhiều lúc vội, tính tiền cho khách mà phải đợi tới 30, 40s thì thật là bực mình. Có cách nào mà khiến cho việc tính toán được nhanh hơn thì chỉ cho mình với. VBA thì có nhanh hơn không các bạn nhỉ? Khổ nỗi là mình chưa biết 1 tí gì về VBA. :D
Cho mình xin ý kiến nào.
Thanks!
 
Mình chẳng biết sắp xếp thế nào cho hợp lý nữa, dùng thử cột phụ, thấy có cải thiện hơn chút ít.
 

File đính kèm

Tigertiger ơi, cách làm bằng VBA thì tôi cũng có 1 bài tương tự tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8641
Nhưng tôi nghỉ ko nên tạo Function... vì nếu thế chẳng hóa ra lại trở về như củ.. tức chỉ lấy giá trị có vài cell mà phải làm công thức cho cả cột... nên tôi vẫn theo quan điểm:
1> Nếu dùng VBA thì tôi sẽ làm 1 sub chứ ko dùng Function
2> Nếu dùng công thức thì phải đảm bảo tốc độ tính toán nhanh và tổng quát cho mọi trường hợp
Tổng quát phải như vầy đây:
-Vì bảng tính của mỗi người có khác nhau (cột C của ta chưa chắc là cột C của người khác)... Vậy nếu làm bài toán này ta nên có 1 chổ nào đó cho mọi người khai báo rằng : "Tôi muốn tính tổng cho cột ... ??? theo cột.... ???""
Tóm lại: 1 công thức đúng với mọi bảng tính, tốc độ nhanh.. đó mới là vấn đề...
Vậy chúng ta thử nghiên cứu theo hướng này xem... Còn cách làm đơn giãn nhất đến thời điểm hiện giờ có lẽ là cách mà bạn hoangdanh282vn đang làm...
Mến
ANH TUẤN
Cảm ơn thày, em rất cần các bài toán này trong quá trình học VBA. Nếu diễn đàn sưu tầm được các bài có hệ thống theo mức độ đơn giản từ dễ đến khó thì tốt quá.
 

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

Back
Top Bottom