Giúp chuyển công thức sang macro

Liên hệ QC

Xuân hiếu

Thành viên thường trực
Tham gia
23/5/08
Bài viết
235
Được thích
72
Mình có cái công thức thống kê tổng số (ts), nữ (n), dân tộc (dt), nữ dân tộc (ndt) mình muốn chuyển sang mác rô có cái nút tên thông kê cho nhẹ sau khi nhập điểm xong rùi nhấn cái nút thống kê thì chương trình thông kê mới chạy mới hiện lên dữ liệu thông kê. Cảm ơn các anh chị nhiều

ví dụ mẫu

Tạo một cái nút có chữ thống kê nằm phía trên sau khi nhập xong nhấn vào nút đó nó xuất ra như trong ví dụ được không?
 

File đính kèm

  • hoi.xls
    21.5 KB · Đọc: 52
Chỉnh sửa lần cuối bởi điều hành viên:
Biết nói thế này bạn sẽ giận, nhưng cũng chỉ muốn chúng ta khá hơn thôi:

Bạn vô trách nhiệm với câu hỏi của mình & với cộng đồng:

(*) Tên các học sinh làm gì lại giống nhau hết vậy?! Chuyện làm 1 dẫy tên tăng dần trong excel có khó gì lắm đâu cơ chứ!

Đã muốn thống kê theo dân tộc, thì có trên 2 dân tộc trở lên mới dễ kiểm đúng sai chứ!

(*) Bạn nói phải thống kê rất nhiều môn; Vậy không thể định lượng là bao nhiêu môn được ư?

(*) Mình đoán bạn muốn thống kê số loại giỏi, khá, Trung bình, Kém, yếu,. . . Vậy như thế nào là đạt loại giỏi vậy?, Các loại khác nữa. Có phải ai cũng phải biết như bạn là loại khá là điểm trên hay = 6.5 đến 8, . . .

Vấn đề bạn nêu ra càng khúc chiết, càng nhận được nhiều những ý kiến xác đán; & quan trọng hơn là đỡ tốn thời gian của bạn cũng như của cộng đồng.

Cũng những mong ngày càng tốt hơn mà thôi!

Thân ái!
 
Xin các bạn chuyển giúp công thức nay sang macro

Xin các anh chị chuyển giúp cái công thức trong ví dụ đính kèm vào macro (dùng Macro để điền hàm nhưng mình chưa biết phần này xin cảm ơn). Xin cảm ơn nhiều
 

File đính kèm

  • hoi.xls
    16 KB · Đọc: 21
Lần chỉnh sửa cuối:
Xin các anh chị chuyển giúp cái công thức trong ví dụ đính kèm vào macro (dùng Macro để điền hàm nhưng mình chưa biết phần này xin cảm ơn). Xin cảm ơn nhiều
Việc chuyển công thức thành code quá đơn giản ---> Tóm lại viết trong bảng tính thế nào thì trong code cũng y chang vậy ---> Có thể dùng chức năng record macro để thử nghiệm
Tuy nhiên nếu là tôi thì tôi cóc làm thế ---> Nếu vì nguyên nhân cho "nhẹ" máy, vậy thì tôi nhập công thức 1 cell đầu tiên... đến cuối cùng tôi fill 1 nhát là ra
Bạn so sánh giữa cách dùng macro với cách làm của tôi thì nhanh chậm thế nào?
 
Nếu bạn thích nghiên cứu về VBA, thì xin giới thiệu đặc sản hàm người dùng

PHP:
Option Explicit:        Option Base 1
Function ThongKe(LookUpRange As Range, Chuan As Range)
 ReDim MDL(4, 4) As Integer:           Dim Lop As Double, jJ As Byte
 Dim Rng As Range, Clls As Range
 
 Set Rng = LookUpRange.Cells(1, 1).Resize(LookUpRange.Rows.Count)
 For jJ = 1 To Chuan.Count
   With Application.WorksheetFunction
      MDL(1, jJ) = .CountIf(Rng, Cells(5, 3 + jJ))
   End With
   Lop = Chuan.Cells(1).Offset(, jJ - 1).Value
   For Each Clls In Rng
      If Clls.Offset(, 1).Value <> "Nam" And Clls.Value = Lop Then
         MDL(2, jJ) = MDL(2, jJ) + 1
         If Clls.Offset(, 2).Value <> "Kinh" And Clls.Value = Lop Then _
            MDL(4, jJ) = MDL(4, jJ) + 1
      End If
      If Clls.Offset(, 2).Value <> "Kinh" And Clls.Value = Lop Then _
         MDL(3, jJ) = MDL(3, jJ) + 1
   Next Clls
 Next jJ
 ThongKe = MDL
End Function
Chú í: Đó là hàm mảng nha!
(Xem thêm trong file)
 

File đính kèm

  • GPE.rar
    12.3 KB · Đọc: 82
Nếu bạn thích nghiên cứu về VBA, thì xin giới thiệu đặc sản hàm người dùng
PHP Code:
Option Explicit: Option Base 1
Function ThongKe(LookUpRange As Range, Chuan As Range)
ReDim MDL(4, 4) As Integer: Dim Lop As Double, jJ As Byte
Dim Rng
As Range, Clls As Range

Set Rng
= LookUpRange.Cells(1, 1).Resize(LookUpRange.Rows.Count)
For
jJ = 1 To Chuan.Count
With Application
.WorksheetFunction
MDL
(1, jJ) = .CountIf(Rng, Cells(5, 3 + jJ))
End With
Lop
= Chuan.Cells(1).Offset(, jJ - 1).Value
For Each Clls In Rng
If Clls.Offset(, 1).Value <> "Nam" And Clls.Value = Lop Then
MDL
(2, jJ) = MDL(2, jJ) + 1
If Clls.Offset(, 2).Value <> "Kinh" And Clls.Value = Lop Then _
MDL
(4, jJ) = MDL(4, jJ) + 1
End
If
If
Clls.Offset(, 2).Value <> "Kinh" And Clls.Value = Lop Then _
MDL
(3, jJ) = MDL(3, jJ) + 1
Next Clls
Next jJ
ThongKe
= MDL
End
Function

Chú í: Đó là hàm mảng nha!
(Xem thêm trong file)
Tập tin đính kèm
rar.gif
GPE.rar (12.3 KB, 2 lần tải)

Xin cảm ơn bạn nhiều nhưng mình muốn bạn tạo một cái nút tên thống kê giả sử cái nút này nằm ở ô A1 khi nhấn cái nút nó mới hiện lên kết quả thống kê và một cái nút kết thúc để khi nhấn nó thì hủy lệnh thống kê mục đích là khi cần mới thống kê còn không thì thôi cho nó nhẹ.
Bạn giúp mình với nhé
 
Việc chuyển công thức thành code quá đơn giản ---> Tóm lại viết trong bảng tính thế nào thì trong code cũng y chang vậy ---> Có thể dùng chức năng record macro để thử nghiệm
Tuy nhiên nếu là tôi thì tôi cóc làm thế ---> Nếu vì nguyên nhân cho "nhẹ" máy, vậy thì tôi nhập công thức 1 cell đầu tiên... đến cuối cùng tôi fill 1 nhát là ra
Bạn so sánh giữa cách dùng macro với cách làm của tôi thì nhanh chậm thế nào?

Không phải ý đó đâu bạn ơi. Vì trong cái phần mình thiết kế nó nặng lắm lung tung cả lên đến 50M luôn nên rất chậm đặt biệt là khi lưu do đó mình muốn là một số công thức, thống kê, có một cái nút riêng khi bình thường không nhấn cái nút đó thì nó không hoạt động giống như chưa có cái bảng thống kê đó. khi nào muốn thống kê báo cáo ta nhấn cái nút đó thì nó xuất hiện dữ liệu thống kê để lấy ra mà báo cáo,... đó bạn. Với lại sau khi lấy xong dữ liệu đó có cái nút đóng lại để tắt cái thống kê đó đi nhằm làm cho cái phần tính điểm cho nó nhẹ đó bạn
Mình cảm ơn bạn rất nhiều
Giúp mình với nhé bạn

 

File đính kèm

  • hoi.xls
    21 KB · Đọc: 23
Xin cảm ơn bạn nhiều nhưng mình muốn bạn tạo một cái nút tên thống kê giả sử cái nút này nằm ở ô A1 khi nhấn cái nút nó mới hiện lên kết quả thống kê và một cái nút kết thúc để khi nhấn nó thì hủy lệnh thống kê mục đích là khi cần mới thống kê còn không thì thôi cho nó nhẹ.
Bạn giúp mình với nhé
Vầy được không?
- Bấm nút Thống kê, 1 InputBox hiện ra cho bạn chọn vùng dữ liệu điểm
- Chọn xong, OK 1 nhát thì ĐTB sẽ hiện ra tại cột kế bên
- Bấm nút Xóa nếu muốn xóa toàn bộ điểm TB
Xem file
-----------
Chán đồng chí quá... Gợi ý sử dụng record macro mà dường như chẳng chịu nghiên cứu gì cả
 

File đính kèm

  • Dap.xls
    23 KB · Đọc: 34
Thì đây, muốn ma "cá rô" hay "cá chép" gì cũng được
Thân

Cò Già chưa bẫy lỗi chia cho 0 à nha! Vì hàm Average cũng dùng phép chia (nếu chọn vùng là rỗng thì lỗi ngay). điều thứ 2 là tôi nghĩ không phải ý tác giả muốn chép công thức rồi Fill hoặc gán vào cell công thức mà là khi ra kết quả, chỉ hiển thị là giá trị thôi chứ không có công thức! Như vậy, Cò Già phải thêm cái copy value vào nữa là đúng ý tác giả đó!
 
Lần chỉnh sửa cuối:
Không phải ý đó đâu bạn ơi. Vì trong cái phần mình thiết kế nó nặng lắm lung tung cả lên đến 50M luôn nên rất chậm đặt biệt là khi lưu do đó mình muốn là một số công thức, thống kê, có một cái nút riêng khi bình thường không nhấn cái nút đó thì nó không hoạt động giống như chưa có cái bảng thống kê đó. khi nào muốn thống kê báo cáo ta nhấn cái nút đó thì nó xuất hiện dữ liệu thống kê để lấy ra mà báo cáo,... đó bạn. Với lại sau khi lấy xong dữ liệu đó có cái nút đóng lại để tắt cái thống kê đó đi nhằm làm cho cái phần tính điểm cho nó nhẹ đó bạn
Mình cảm ơn bạn rất nhiều
Giúp mình với nhé bạn
Nếu vì lý do file năng do công thức nhiều thì tôi nghĩ có dù bạn có chuyển nó thành code nó vẫn cứ nặng như thường
File Excel mà lên đến 50 MB thì quả thật rất bất thường, bạn nên xem lại việc bố trí dữ liệu và tìm xem liệu có phải file bị virus hay không?
- File bạn bao nhiểu sheet?
- Mổi sheet có bao nhiêu dòng, bao nhiêu cột?
 
Nhưng sao khi làm xong khóa (protect) lại thì gọi macro macro báo lỗi làm sao đây. Chưa thành công gì cả
 
Nhưng sao khi làm xong khóa (protect) lại thì gọi macro macro báo lỗi làm sao đây. Chưa thành công gì cả

Khi dùng protect, bạn phải mở khóa trước rồi chạy macro, sau đó khóa lại. Như vậy, bạn phải thêm đoạn code mở khóa trước rồi mới đến macro thống kê, sau đó là khóa lại.
 
Nhưng sao khi làm xong khóa (protect) lại thì gọi macro macro báo lỗi làm sao đây. Chưa thành công gì cả
Khi khóa bảng tính ông BIU cho phép mình khóa HẾT, TỪNG VÙNG, 1 CELL.... có khóa thì khóa vừa vừa thôi, làm ơn chừa những khu vực muốn chạy "ma cá rô" vào đó chứ
Khóa hết thì nó "tèo" là phải "zồi"
Thân
 
Khi dùng protect, bạn phải mở khóa trước rồi chạy macro, sau đó khóa lại. Như vậy, bạn phải thêm đoạn code mở khóa trước rồi mới đến macro thống kê, sau đó là khóa lại.

bạn giúp mình tạo một đoạn code unprotect được không?
Xin cảm ơn nhiều
Với lại tại vị trí xuất hiện dữ liệu mình muốn không có công thức chỉ hiện số liệu thì làm sao bạn
 
Lần chỉnh sửa cuối:
Khi dùng protect, bạn phải mở khóa trước rồi chạy macro, sau đó khóa lại. Như vậy, bạn phải thêm đoạn code mở khóa trước rồi mới đến macro thống kê, sau đó là khóa lại.
Bộ "zảnh" lắm sao bồ tèo, khóa thì khóa nhưng chừa chỗ chạy macro thôi, vì chưa chạy trong đó có cái quái gì đâu mà sợ người khác chỏ mũi vào phá đám
Còn nếu muốn "ziết" thì cứ "ziết", phức tạp hóa vấn đề "zồi"
Thân
 
bạn giúp mình tạo một đoạn code unprotect được không?
Xin cảm ơn nhiều
Như vầy nha, giả sử bạn có 1 macro ABC nào đó, bạn thêm thủ tục này vào:

Sub ABC()
ActiveSheet.Unprotect ("password")
............ (thủ tục của bạn)............
ActiveSheet.Protect ("password")
End Sub.
 
em không muốn chỗ hiện kết quả hiện công thức thì làm như thế nào? cảm ơn nhiều
Thì trong lúc ghi, bạn tiếp tục copy vùng đó , xong lại paste value chính vùng đó thì nó mất tiêu công thức, ý định muốn làm thêm cái gì gì nữa thì cứ tiếp tục tới khi nào chán thì thôi, lúc đó bạn sẽ hiểu và nhớ lâu chứ
Thân
 
Web KT
Back
Top Bottom