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.
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à
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
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)
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!
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
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
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ỏ
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
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 đó)
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 đó)
Vụ này đã bàn rất nhiều lần rồi (bạn tìm sẽ thấy).... Riêng tôi thì cóc thèm xài mấy thằng Byte hay Interger cho mệt, cứ Long mà phang..
-----------------
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ỏ
Em không biết gì về API cả, đây chỉ là những kiến thức cơ bản về Macro mà các sư phụ tigertiger dạy em trước đó. Em còn nhớ rõ trong một bài giảng về khai báo biến sư phụ có lấy ví dụ thế này: nếu ta muốn dùng 1 biến để chứa các tháng thì chỉ cần khai báo kiểu byte là đủ vì các tháng chỉ từ 1 đến 12 mà giới hạn của byte là từ 0 đến 255 vì thế khai báo là Long thì hơi phí. Trong các chương trình nhỏ thì nó ko ảnh hưởng gì nhưng trong các chương trình lớn nếu chúng ta biết rõ giới hạn của biến thì nên khai báo chuẩn để tiết kiệm bộ nhớ cho máy tính giúp chương trình chạy nhanh hơn.
Vài dòng chia sẻ!!!
Em không biết gì về API cả, đây chỉ là những kiến thức cơ bản về Macro mà sư phụ tigertiger dạy em trước đó. Em còn nhớ rõ trong một bài giảng về khai báo biến sư phụ có lấy ví dụ thế này: nếu ta muốn dùng 1 biến để chứa các tháng thì chỉ cần khai báo kiểu byte là đủ vì các tháng chỉ từ 1 đến 12 mà giới hạn của byte là từ 0 đến 255 vì thế khai báo là Long thì hơi phí. Trong các chương trình nhỏ thì nó ko ảnh hưởng gì nhưng trong các chương trình lớn nếu chúng ta biết rõ giới hạn của biến thì nên khai báo chuẩn để tiết kiệm bộ nhớ cho máy tính giúp chương trình chạy nhanh hơn.
Vài dòng chia sẻ!!!
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)
Ý 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?
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ớ
Có chắc không vậy, khi nói đên boolean ai chả biết về mặt lưu thông tin thì nó lưu được hai giá trị ( chỉ cần một bít, về mặt logic). Tuy nhiên xét trên khía cạnh vật lý thì nó lại ngốn 2 byte nhé. Đố mọi người biết tại sao nó lại không dùng một bít ( vật lý).
Có chắc không vậy, khi nói đên boolean ai chả biết về mặt lưu thông tin thì nó lưu được hai giá trị ( chỉ cần một bít, về mặt logic). Tuy nhiên xét trên khía cạnh vật lý thì nó lại ngốn 2 byte nhé. Đố mọi người biết tại sao nó lại không dùng một bít ( vật lý).
Biến kiểu Boolean nó chỉ chiếm 1 byte trong bộ nhớ thôi bạn, còn tại sao các kiểu dữ liệu được lưu bằng đơn vị i là byte cái này bạn học các môn lập trình cơ sở sẽ biết
Biến kiểu Boolean nó chỉ chiếm 1 byte trong bộ nhớ thôi bạn, còn tại sao các kiểu dữ liệu được lưu bằng đơn vị i là byte cái này bạn học các môn lập trình cơ sở sẽ biết
Lập trình cơ sở nói về một ngôn ngữ lý tưởng (ideal language). VBA không phải là ngôn ngữ lập trình lý tưởng.
Trong VBA, Boolean là một Integer. Và cách sử lý trị của nó cũng khá rối rắm.
Nêu 0 thì là false, nếu bất cứ bit nào trong 16 bits của nó khác 0 thì là True. Mặc định True là tất cả các bits đều khác 0.
Nói chung thì cái chuyện nhanh chậm và tốn bộ nhớ chỉ là chuyện 20 năm về trước. Thời buổi bây giờ CPU có khả năng lấy nhiều bytes 1 lúc, và máy tính có bộ nhớ lớn. Chuyện kích cỡ của trị nguyên nó gần như không quan trọng, dùng byte chỉ thêm phần rắc rối với khả năng bị tràn số. Trừ phi bạn tạo bảng dò (bit map) hoặc dùng mảng rất lớn (cỡ triệu phần tử) hoặc dùng hàm đệ quy.
Byte cũng có lợi điểm là nó tránh cho bạn trường hợp lựa chọn big/small endian. Tuy nhiên, đây là loại lập trình cao cấp và lập trình nhúng (embedding)
Lập trình cơ sở nói về một ngôn ngữ lý tưởng (ideal language). VBA không phải là ngôn ngữ lập trình lý tưởng.
Trong VBA, Boolean là một Integer. Và cách sử lý trị của nó cũng khá rối rắm.
Nêu 0 thì là false, nếu bất cứ bit nào trong 16 bits của nó khác 0 thì là True. Mặc định True là tất cả các bits đều khác 0.
Nói chung thì cái chuyện nhanh chậm và tốn bộ nhớ chỉ là chuyện 20 năm về trước. Thời buổi bây giờ CPU có khả năng lấy nhiều bytes 1 lúc, và máy tính có bộ nhớ lớn. Chuyện kích cỡ của trị nguyên nó gần như không quan trọng, dùng byte chỉ thêm phần rắc rối với khả năng bị tràn số. Trừ phi bạn tạo bảng dò (bit map) hoặc dùng mảng rất lớn (cỡ triệu phần tử) hoặc dùng hàm đệ quy.
Byte cũng có lợi điểm là nó tránh cho bạn trường hợp lựa chọn big/small endian. Tuy nhiên, đây là loại lập trình cao cấp và lập trình nhúng (embedding)
Lập trình cơ sở nói về một ngôn ngữ lý tưởng (ideal language). VBA không phải là ngôn ngữ lập trình lý tưởng.
Trong VBA, Boolean là một Integer. Và cách sử lý trị của nó cũng khá rối rắm.
Nêu 0 thì là false, nếu bất cứ bit nào trong 16 bits của nó khác 0 thì là True. Mặc định True là tất cả các bits đều khác 0.
Nói chung thì cái chuyện nhanh chậm và tốn bộ nhớ chỉ là chuyện 20 năm về trước. Thời buổi bây giờ CPU có khả năng lấy nhiều bytes 1 lúc, và máy tính có bộ nhớ lớn. Chuyện kích cỡ của trị nguyên nó gần như không quan trọng, dùng byte chỉ thêm phần rắc rối với khả năng bị tràn số. Trừ phi bạn tạo bảng dò (bit map) hoặc dùng mảng rất lớn (cỡ triệu phần tử) hoặc dùng hàm đệ quy.
Byte cũng có lợi điểm là nó tránh cho bạn trường hợp lựa chọn big/small endian. Tuy nhiên, đây là loại lập trình cao cấp và lập trình nhúng (embedding)