Autosum

Liên hệ QC

ERX_Vietnam

Thành viên hoạt động
Tham gia
27/9/08
Bài viết
113
Được thích
175
Mình có một vấn đề cần nhờ các bạn giúp đỡ:
- Mình có file báo cáo được truy xuất từ hệ thống bán hàng SAP sang excel. Sau mỗi ngày sẽ có giá trị báo cáo khác nhau. Ví dụ: ngày hôm nay là từ A1:A100, ngày mai là từ A1:A50....
- Mình muốn tạo macro tổng cộng cho các giá trị này sao cho khi chạy macro thì sẽ tự động sum các giá trị lại mà không cần khai báo vùng chọn (ví dụ: ngày hôm nay sẽ là sum(A1:A100) và chèn dữ liệu sum xuống ô A111, ngày mai sẽ là sum(A1:A50) và chèn dữ liệu sum xuống ô A51, dòng thời tô màu cho dòng kết quả sum tự động.
- Trước đây đã có người trong công ty làm rồi như bây giờ giao lại cho mình thì macro đã bị xoá mất, anh em xem có cách nào giúp mình với.
 

File đính kèm

  • autosum.xls
    46 KB · Đọc: 28
Mình có một vấn đề cần nhờ các bạn giúp đỡ:
- Mình có file báo cáo được truy xuất từ hệ thống bán hàng SAP sang excel. Sau mỗi ngày sẽ có giá trị báo cáo khác nhau. Ví dụ: ngày hôm nay là từ A1:A100, ngày mai là từ A1:A50....
- Mình muốn tạo macro tổng cộng cho các giá trị này sao cho khi chạy macro thì sẽ tự động sum các giá trị lại mà không cần khai báo vùng chọn (ví dụ: ngày hôm nay sẽ là sum(A1:A100) và chèn dữ liệu sum xuống ô A111, ngày mai sẽ là sum(A1:A50) và chèn dữ liệu sum xuống ô A51, dòng thời tô màu cho dòng kết quả sum tự động.
- Trước đây đã có người trong công ty làm rồi như bây giờ giao lại cho mình thì macro đã bị xoá mất, anh em xem có cách nào giúp mình với.

Đằng nào cũng phải chạy Macro

Sao bạn không chọn cả vùng rồi bấm nút SUM (biểu tượng tổng sigma đo) trên thành công cụ là được
.
 
Upvote 0
Hic hic, làm vậy cũng được nhưng thủ công quá. Vừa chọn vùng, vừa tô màu nền. Mà mấy đứa nhân viên chổ em làm bieng lắm, không chịu sum mà chỉ toàn bấm vào nút sum có sẵn thôi, nên sếp mình nhờ "nghiên cứu" làm thử nhưng mình lại...hơi bị mù VBA nên cần anh em cho ý kiến đó mà.
Không biết còn ai giúp được mình ko nhỉ???**~**
 
Upvote 0
Hic hic, làm vậy cũng được nhưng thủ công quá. Vừa chọn vùng, vừa tô màu nền. Mà mấy đứa nhân viên chổ em làm bieng lắm, không chịu sum mà chỉ toàn bấm vào nút sum có sẵn thôi, nên sếp mình nhờ "nghiên cứu" làm thử nhưng mình lại...hơi bị mù VBA nên cần anh em cho ý kiến đó mà.
Không biết còn ai giúp được mình ko nhỉ???**~**
Chắc là giống vầy!
Tuy dùng VBA để làm việc này chẳng có vấn đề gì cả.. nhưng mà... Ẹc... Ẹc... thấy buồn cười quá.. vì cứ giống như dùng thanh đại đao để "bụp" 1 con gà
(theo cãm nghĩ của riêng tôi thì thật chẳng đáng tí nào.. nhưng khách hàng THÍCH thì CHIỀU)
 

File đính kèm

  • AutoSum_01.xls
    51 KB · Đọc: 54
Upvote 0
Mình có một vấn đề cần nhờ các bạn giúp đỡ:
- Mình có file báo cáo được truy xuất từ hệ thống bán hàng SAP sang excel. Sau mỗi ngày sẽ có giá trị báo cáo khác nhau. Ví dụ: ngày hôm nay là từ A1:A100, ngày mai là từ A1:A50....
- Mình muốn tạo macro tổng cộng cho các giá trị này sao cho khi chạy macro thì sẽ tự động sum các giá trị lại mà không cần khai báo vùng chọn (ví dụ: ngày hôm nay sẽ là sum(A1:A100) và chèn dữ liệu sum xuống ô A111, ngày mai sẽ là sum(A1:A50) và chèn dữ liệu sum xuống ô A51, dòng thời tô màu cho dòng kết quả sum tự động.
- Trước đây đã có người trong công ty làm rồi như bây giờ giao lại cho mình thì macro đã bị xoá mất, anh em xem có cách nào giúp mình với.

Bạn ơi, đứng tại ô A111 (hoặc A50) sau đó ấn phím Alt + "=" (dấu bằng). Bạn không cần viết code cho vấn đề này! Chỉ cần dùng phím tắt là xong ngay mà!
 
Upvote 0
Bạn ơi, đứng tại ô A111 (hoặc A50) sau đó ấn phím Alt + "=" (dấu bằng). Bạn không cần viết code cho vấn đề này! Chỉ cần dùng phím tắt là xong ngay mà!
Đúng vậy! Nhưng còn vụ tô màu nữa... Ẹc... Ẹc... đang nghĩ đến dùng Conditional Formating (phát hiện cell chứa công thức)
Thôi ca_dafi làm luôn đi
 
Upvote 0
Nhưng còn vụ tô màu nữa... Ẹc... Ẹc... đang nghĩ đến dùng Conditional Formating (phát hiện cell chứa công thức)

Theo em (cách cùi bắp) thì cũng dùng conditional Format, nhưng để ý thấy dưới dòng SUM thì không có gì cả; nên điều kiện dễ hơn chút!

Chiếu sáng ô A2:B2, Chọn Format/Conditional Format, gõ vào công thức:
Sau đó Copy Format xuống các cell bên dưới (Alt+E,S,T)
 
Upvote 0
Theo em (cách cùi bắp) thì cũng dùng conditional Format, nhưng để ý thấy dưới dòng SUM thì không có gì cả; nên điều kiện dễ hơn chút!

Chiếu sáng ô A2:B2, Chọn Format/Conditional Format, gõ vào công thức:

Sau đó Copy Format xuống các cell bên dưới (Alt+E,S,T)
Kiệt ơi! cái này thì đơn giản, nhưng có điều: Lở người ta chưa SUM chẳng lẽ cũng tô màu? ---> vì lẽ đó mà tôi đang nghĩ đến hướng dùng Conditional Formating với điều kiện tìm cell có công thức
(Kiệt làm lại thử xem ---> cái vụ CF tìm cell có công thức lâu quá tôi quên mất rồi)
 
Upvote 0
Tôi làm trên E2007:
Nếu dữ liệu không liên tục, hãy chọn vùng cần cộng, rồi gõ Ctrl =
thì được kết quả.

Chắc trên E2003 cũng vậy.
 
Upvote 0
Đã làm VBA thì sao anh không tô mầu luôn bằng VBA
đỡ rắc rối,
Thì có tô rồi đó chứ... nhưng vì cãm thấy cái này mà dùng đến VBA thì hơi buồn cười (nên có hướng khuyên tác giã nên dùng cách dể nhất)
Yêu cầu của tác giả có 2 phần:
1> SUM tự động 1 cột số
2> Tô màu cho kết quả
Cái này nếu làm bằng cách thông thường thì phần SUM có thể làm bằng tay (quả dể).. còn tô màu thì phải nhờ đến trợ thủ Conditional Formating rồi... đúng không?
 
Upvote 0
Kiệt ơi! cái này thì đơn giản, nhưng có điều: Lở người ta chưa SUM chẳng lẽ cũng tô màu? ---> vì lẽ đó mà tôi đang nghĩ đến hướng dùng Conditional Formating với điều kiện tìm cell có công thức
(Kiệt làm lại thử xem ---> cái vụ CF tìm cell có công thức lâu quá tôi quên mất rồi)
Em làm bằng CF nhưng có dùng một tí Macro4 nữa! Mọi người xem thử nhé!
 

File đính kèm

  • Book2.xls
    13.5 KB · Đọc: 12
Upvote 0
Thanks all!
Mình đã "bào chế" file của ndu96081631 bằng cách copy các code nhưng các ô ko có dữ liệu lại tô màu lệch dòng với ô sum.
Nhưng mình muốn các ô được tô màu phải ngang nhau và ngang với ô chứa dữ liệu sum.
Anh em GPE giúp mình với!
 

File đính kèm

  • AutoSum_01.xls
    86.5 KB · Đọc: 11
Lần chỉnh sửa cuối:
Upvote 0
Thanks all!
Mình đã "bào chế" file của ndu96081631 bằng cách copy các code nhưng các ô ko có dữ liệu lại tô màu lệch dòng với ô sum.
Nhưng mình muốn các ô được tô màu phải ngang nhau và ngang với ô chứa dữ liệu sum.
Anh em GPE giúp mình với!
Tạm thời làm vầy đi (dù không hay lắm)
PHP:
Sub Cong()
  Dim SumClls As Range, SumRng As Range
  On Error Resume Next
  Set SumClls = [A65536].End(xlUp).Offset(2)
  For i = 0 To 10
   With SumClls.Offset(, i)
     Set SumRng = Range(Cells(2, .Column), Cells(.Row - 1, .Column))
     .Value = Evaluate("Sum(" & SumRng.Address & ")")
     If .Value = 0 Then .Value = ""
     .Interior.ColorIndex = 37
     .Font.Bold = True
   End With
  Next
End Sub
 

File đính kèm

  • AutoSum_02.xls
    22 KB · Đọc: 15
Upvote 0
Thanks ndu96081631, nhưng nếu mình muốn bỏ qua bước tính toán ở một số cột (ví dụ cột B,E có dữ liệu là số nhưng vẫn ko sum mà vẫn giữ nguyên định dạnh tô màu nền thì làm sao hả bạn.
 

File đính kèm

  • AutoSum.xls
    20 KB · Đọc: 9
Upvote 0
Thanks ndu96081631, nhưng nếu mình muốn bỏ qua bước tính toán ở một số cột (ví dụ cột B,E có dữ liệu là số nhưng vẫn ko sum mà vẫn giữ nguyên định dạnh tô màu nền thì làm sao hả bạn.
Vậy bạn nói chắc chắn 1 lần cuối: Muốn đặt kết quả SUM tại cột nào, bỏ qua cột nào ... thông thương trong trường hợp này dể nhất là IF... Ví du:
For i = 0 to 10 thì tương ứng việc đặt kết quả sẽ chạy từ A8 đến K8... Nếu muốn bỏ qua cột B và E thì:
PHP:
..........
For i = 0 To 10
   With SumClls.Offset(, i)
     If i <> 1 And i <> 4 Then
.......
 
Upvote 0
Thanks ndu96081631, nhưng mình làm vẫn chưa được!
Có phải thế này không?
Sub Cong()
Dim SumClls As Range, SumRng As Range
On Error Resume Next
Set SumClls = [A65536].End(xlUp).Offset(2)
For i = 0 To 10
With SumClls.Offset(, i)
If i <> 1 And i <> 4 Then
Set SumRng = Range(Cells(2, .Column), Cells(.Row - 1, .Column))
.Value = Evaluate("Sum(" & SumRng.Address & ")")
If .Value = 0 Then .Value = ""
.Interior.ColorIndex = 37
.Font.Bold = True
End With
Next
End Sub
Excel báo lỗi Copile Error!
Giúp mình nha! (Hic làm phiền bạn quá -\\/.)
 
Upvote 0
Thanks ndu96081631, nhưng mình làm vẫn chưa được!
Có phải thế này không?
Sub Cong()
Dim SumClls As Range, SumRng As Range
On Error Resume Next
Set SumClls = [A65536].End(xlUp).Offset(2)
For i = 0 To 10
With SumClls.Offset(, i)
If i <> 1 And i <> 4 Then
Set SumRng = Range(Cells(2, .Column), Cells(.Row - 1, .Column))
.Value = Evaluate("Sum(" & SumRng.Address & ")")
If .Value = 0 Then .Value = ""
.Interior.ColorIndex = 37
.Font.Bold = True
End With
Next
End Sub
Excel báo lỗi Copile Error!
Giúp mình nha! (Hic làm phiền bạn quá -\\/.)
Vì bạn IF nhưng không End If nên báo lổi là điều đương nhiên rồi
Xem này:
PHP:
Sub Cong()
  Dim SumClls As Range, SumRng As Range
  On Error Resume Next
  Set SumClls = [A65536].End(xlUp).Offset(2)
  For i = 0 To 10
   With SumClls.Offset(, i)
     If i <> 1 And i <> 4 Then
       Set SumRng = Range(Cells(2, .Column), Cells(.Row - 1, .Column))
       .Value = Evaluate("Sum(" & SumRng.Address & ")")
       If .Value = 0 Then .Value = ""
       .Interior.ColorIndex = 37
       .Font.Bold = True
     End If
   End With
  Next
End Sub
 
Upvote 0
Thanks ndu96081631, nhưng nếu mình muốn bỏ qua bước tính toán ở một số cột (ví dụ cột B,E có dữ liệu là số nhưng vẫn ko sum mà vẫn giữ nguyên định dạnh tô màu nền thì làm sao hả bạn.
Mình làm được rồi nhưng các ô không tính toán nó cũng ko tô màu nền luôn! Bạn chỉ mình các khắc phục với!
 
Upvote 0
Mình làm được rồi nhưng các ô không tính toán nó cũng ko tô màu nền luôn! Bạn chỉ mình các khắc phục với!
Sorry! Tôi làm mà quên test...
Chỉ cần dời 2 đoạn:
.Interior.ColorIndex = 37
.Font.Bold = True
Lên phía trên và nằm dưới đoạn
là ăn tiền
Cụ thể
PHP:
Sub Cong()
  Dim SumClls As Range, SumRng As Range
  On Error Resume Next
  Set SumClls = [A65536].End(xlUp).Offset(2)
  For i = 0 To 10
   With SumClls.Offset(, i)
     .Interior.ColorIndex = 37
     .Font.Bold = True
     If i <> 1 And i <> 4 Then
       Set SumRng = Range(Cells(2, .Column), Cells(.Row - 1, .Column))
       .Value = Evaluate("Sum(" & SumRng.Address & ")")
       If .Value = 0 Then .Value = ""
     End If
   End With
  Next
End Sub
 
Upvote 0
Mình có một vấn đề cần nhờ các bạn giúp đỡ:
- Mình có file báo cáo được truy xuất từ hệ thống bán hàng SAP sang excel. Sau mỗi ngày sẽ có giá trị báo cáo khác nhau. Ví dụ: ngày hôm nay là từ A1:A100, ngày mai là từ A1:A50....
- Mình muốn tạo macro tổng cộng cho các giá trị này sao cho khi chạy macro thì sẽ tự động sum các giá trị lại mà không cần khai báo vùng chọn (ví dụ: ngày hôm nay sẽ là sum(A1:A100) và chèn dữ liệu sum xuống ô A111, ngày mai sẽ là sum(A1:A50) và chèn dữ liệu sum xuống ô A51, dòng thời tô màu cho dòng kết quả sum tự động.
- Trước đây đã có người trong công ty làm rồi như bây giờ giao lại cho mình thì macro đã bị xoá mất, anh em xem có cách nào giúp mình với.
Góp vui 1 đoạn
PHP:
Sub AutoSum()
Dim eRow As Long
For i = 1 To [IV1].End(xlToLeft).Column
    eRow = Cells(65535, i).End(xlUp).Row
    With Cells(eRow + 2, i)
        .Interior.ColorIndex = 37
        .Font.Bold = True
        .Value = WorksheetFunction.Sum(Cells(2, i).Resize(eRow - 1))
    End With
Next
End Sub
Có 1 nhược điểm là sau mỗi lần nhấn nút tính SUM, kết quả lại cộng luôn cả giá trị đã tính SUM lần trước đó

Nếu chắc chắn trong vùng số liệu cần tính SUM không có ô trống thì
PHP:
thay eRow = Cells(65535, i).End(xlUp).Row
thành eRow = Cells(1, i).End(xlDown).Row
sẽ khắc phục được nhược điểm ở trên
 
Upvote 0
Web KT
Back
Top Bottom