Đếm số sheet trong workbok? (2 người xem)

  • Thread starter Thread starter van_v
  • Ngày gửi Ngày gửi
Liên hệ QC

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

van_v

Thành viên mới
Tham gia
23/6/08
Bài viết
11
Được thích
0
cám ơn mọi người đã chỉ tôi nhưng chỗ sai trong cách lập hàm của mình ở những bài trước. hôm nay mọi người có thêt chir tôi làm thế nào để đếm số shêt tróng workbok không, tôi cần tìm và thay thế một số điẻm trong các sheet đó nhưng không biết làm tế nào để đếm chúng cho chính xác là đã thay hết chưa. cám ơn mọi người.
 
Bạn đặt name VD: Sosh
Sosh=GET.WORKBOOK(4)
Xong gõ Sosh ở ô nào đó bạn sẽ biết được file có bao nhiêu sheet.
Thân.
Nên là:
Mã:
SoSh = GET.WORKBOOK(4) + 0*NOW()
Hoặc
Mã:
SoSh = GET.WORKBOOK(ROW(INDIRECT("A4")))
Để cho việc tự động cập nhật được tốt hơn (khi thêm hoặc xóa bớt sheet)
 
mọi người có thể chỉ e rõ giúp em rõ hơn không.em nên đặt name tại ô nào. và "=GET.WOKBOOK(4)+0*NOW() cs phải là một công tức ễcl không. em không rành về code lắm. cám ơn mọi người trước nha
 
Chào bạn!
Bạn có thể đặt name như sau:
+ Vào Insert-->Name-->Define--> xuất hiện 1 khung
+ Tại ô: Name in workbok bạn gõ:"SoSh" ( hoặc tên nào đó bạn thích)
+ Tại ô:Refers to bạn đánh công thức: = GET.WORKBOOK(4) + 0*NOW()
+ Sau đó tại 1 cells nào đó bạn gõ: =SoSh--> Enter là ra kết quả liền hà

Chúc bạn thành công!

Chào bạn!
 
mọi người có thể chỉ e rõ giúp em rõ hơn không.em nên đặt name tại ô nào. và "=GET.WOKBOOK(4)+0*NOW() cs phải là một công tức ễcl không. em không rành về code lắm. cám ơn mọi người trước nha
Cách đặt name thì bài trên đã nói rồi, tôi nói thêm 1 chút: hàm này không phải là hàm Excel thông thường, nó là hàm macro 4, có từ thời xa xưa nhưng do ứng dụng của nó vẩn còn rất hửu ích nên đến nay vẩn còn người dùng... Với bộ hàm này, có cái đặt name được, có cái thì không (tùy)
Tải file trong bài #9 tại đây để hiểu thêm về macro 4:
http://www.giaiphapexcel.com/forum/showthread.php?t=202
 
Sau mấy ngày tìm hiểu em thấy còn cái này,không phải dung code:=info("numfile") nó cũng cho kết quả
 
Mình nghĩ là ngocchung89 đúng đó.
Mình test file trên Excel 2007 thấy đúng đó!
Thân chào và chúc sức khỏe!
Còn mình thì cho rằng bạn Volga nói chính xác
Bạn thử dùng hàm này khi mở 2 hoặc 3 file cùng lúc xem (Excel 2003 hay 2007 gì cũng vậy)
Tóm lại: Hàm này ra kết quả là tổng số sheet của tất cả các file đang mở chứ không phải của file hiện hành đâu ---> Không dùng được!
 
Còn mình thì cho rằng bạn Volga nói chính xác
Bạn thử dùng hàm này khi mở 2 hoặc 3 file cùng lúc xem (Excel 2003 hay 2007 gì cũng vậy)
Tóm lại: Hàm này ra kết quả là tổng số sheet của tất cả các file đang mở chứ không phải của file hiện hành đâu ---> Không dùng được!
Ý mình cũng như vậy mà!
Nhưng cho mình hỏi tí:
Mình mở 1 file mới, rồi mở thêm 1 file mới nữa là 2 file đúng không?
Nhưng mình nhập hàm này vào trong 1 sheet của 1 file thì kết quả là 3 là sao? phải 3 sheet không?
Mã:
=INFO("numfile")
Rồi sao đó mình thêm thử một sheet trong file có công thức trên, kết quả của hàm này không cập nhật được mà phải gõ lại, kết quả thay đổi là 4.
Vậy là sao?
Bạn có thể giải thích thêm về hàm này không?
Thân chào và chúc sức khỏe?
 
Ý mình cũng như vậy mà!
Nhưng cho mình hỏi tí:
Mình mở 1 file mới, rồi mở thêm 1 file mới nữa là 2 file đúng không?
Nhưng mình nhập hàm này vào trong 1 sheet của 1 file thì kết quả là 3 là sao? phải 3 sheet không?
Mã:
=INFO("numfile")
Rồi sao đó mình thêm thử một sheet trong file có công thức trên, kết quả của hàm này không cập nhật được mà phải gõ lại, kết quả thay đổi là 4.
Vậy là sao?
Bạn có thể giải thích thêm về hàm này không?
Thân chào và chúc sức khỏe?
Hàm này dùng trong Excel 2007 cho kết quả chính xác hơn
Có thể trong Excel 2003 hàm này tính luôn sheet ẩn là sheet History chăng? (nó tự cộng thêm 1 sheet nữa)
 
Hàm này dùng trong Excel 2007 cho kết quả chính xác hơn
Có thể trong Excel 2003 hàm này tính luôn sheet ẩn là sheet History chăng? (nó tự cộng thêm 1 sheet nữa)
Cám ơn nhé, vậy là hàm này không thể dùng để đếm số sheet của tất cả các file Excel đang mở đúng không?
Thân chào và chúc sức khỏe!
 
Nên là:
Mã:
SoSh = GET.WORKBOOK(4) + 0*NOW()
Hoặc
Mã:
SoSh = GET.WORKBOOK(ROW(INDIRECT("A4")))
Để cho việc tự động cập nhật được tốt hơn (khi thêm hoặc xóa bớt sheet)
Xin hướng dẫn em như sau:
Trong Workbook của em có nhiều Sheet, trong đó có một số Sheet là T01, T02, TNam ...bây giờ em muốn biết Tổng số Sheet có chữ đầu tiên là T thì làm thế nào. (lưu ý vì số lượng Sheet quá nhiều, nên em có ẩn Sheet bằng Format/Sheet/Hide)
Em cảm ơn!
 
Xin hướng dẫn em như sau:
Trong Workbook của em có nhiều Sheet, trong đó có một số Sheet là T01, T02, TNam ...bây giờ em muốn biết Tổng số Sheet có chữ đầu tiên là T thì làm thế nào. (lưu ý vì số lượng Sheet quá nhiều, nên em có ẩn Sheet bằng Format/Sheet/Hide)
Em cảm ơn!
Bạn có thể dùng code
PHP:
Sub DemSheet()
Dim Sh As Worksheet
Dim Tmp As Long
For Each Sh In ThisWorkbook.Worksheets
  If Left(Sh.Name, 1) = "T" Then
    Tmp = Tmp + 1
  End If
Next
MsgBox Tmp
End Sub
 
Bạn có thể dùng code
PHP:
Sub DemSheet()
Dim Sh As Worksheet
Dim Tmp As Long
For Each Sh In ThisWorkbook.Worksheets
  If Left(Sh.Name, 1) = "T" Then
    Tmp = Tmp + 1
  End If
Next
MsgBox Tmp
End Sub

em nghĩ Tmp kiểu byte là hợp lý nhất, vì 1 workbooks không không hơn 100 sheet đâu.
 
theo mình thì bye hay interger thì sau khi máy xử lý đều chuyển thành as long hết.
Câu này hem đúng anh nha, nếu thế người ta sinh ra 2 loại biến đó làm chi, với những chương trình lớn nếu biết tận dụng các biến này một cách tối đa thì tiết kiệm được kha khá bộ nhớ của máy tính đó. Trên diễn đàn chúng ta chỉ viết những đoạn chương trình nhỏ nên chúng ta chưa quan tâm đến việc tiết kiệm bộ nhớ máy tính vì thế nên mới khai báo tất là Long cho chắc.
 
Câu này hem đúng anh nha, nếu thế người ta sinh ra 2 loại biến đó làm chi, với những chương trình lớn nếu biết tận dụng các biến này một cách tối đa thì tiết kiệm được kha khá bộ nhớ của máy tính đó. Trên diễn đàn chúng ta chỉ viết những đoạn chương trình nhỏ nên chúng ta chưa quan tâm đến việc tiết kiệm bộ nhớ máy tính vì thế nên mới khai báo tất là Long cho chắc.
chắc phải để các sư phụ giải thích. tôi thì xem các code API họ ít khi xử dụng bye mà toàn sử dung LOng. chẳng lẽ code được win hỗ trợ lại là trương trình nhỏ
 
Bạn có thể dùng code
PHP:
Sub DemSheet()
Dim Sh As Worksheet
Dim Tmp As Long
For Each Sh In ThisWorkbook.Worksheets
  If Left(Sh.Name, 1) = "T" Then
    Tmp = Tmp + 1
  End If
Next
MsgBox Tmp
End Sub
Em cảm ơn anh.
Anh giúp em thêm một tí, em muốn Kết quả thể hiện tại Cell A1 của Sheet "Ma" thì làm cách nào? (không cần thông báo Msgbox)
 
chắc phải để các sư phụ giải thích. tôi thì xem các code API họ ít khi xử dụng bye mà toàn sử dung LOng. chẳng lẽ code được win hỗ trợ lại là trương trình nhỏ
Không đâu anh Duy thương. mỗi biến được lưu một giá trị, mà giá trị có thể lớn hoặc nhỏ nên theo đó mình phải khai báo cho phù hợp, Còn trong 1 chương trình cho dù chương trình đó lớn tới cỡ nào đi chăng nữa nhưng nếu các biến của nó không có lưu giá trị lớn thì nó cũng khai báo kiểu nho nhỏ thôi
ví dụ
có 1 vài trường hợp biến chỉ được nhận 1 trong 2 giá trị(tại sao người ta không sử dụng kiểu, byte, long hoặc integer để lưu) mà chọn kiểu Boolean, vì kiểu boolean phù hợp với yêu cầu và tiết kiệm được nhiều bộ nhớ
nếu mình nhận định được các giá trị mà biến có thể lưu thì mình nên đặt bộ nhớ cho thích hợp
(do hiện nay tộc độ cũng như bộ nhớ máy tính nhiều nên anh thấy không vấn đề gì, nếu anh chạy file lớn mà không để ý đến biến là nguy hiểm lắm đó)
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom