Làm sao xử lý được Range 3D trong hàm tự tạo?

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,952
Trong Excel, 1 số hàm có thể truy xuất được Range 3D., chẳng hạn là hàm SUM
Ví dụ: Để tính tổng vùng A1:A10 từ sheet1 đến sheet3, hàm SUM biểu diễn thế này =SUM(Sheet1:Sheet3!A1:A10)
Vấn đề đặt ra là: Nếu tôi cũng viết 1 hàm tự tạo thì làm sao tôi có thể truy xuất được Range 3D theo kiểu như trên?
Có ai biết vấn đề này không? Giúp tôi với
 
Đại khái là:
Tìm vị trí dấu : (nếu có), so với vị trí dấu ! (nếu có), nếu dấu ! nằm sau dấu : thì là 3D
Nếu là 3D, tách địa chỉ ra 3 phần: tên sheet đầu, tên sheet cuối và rng

PHP:
For i = 1 to Sheets.Count
   If Sheets(i).Name = "Sheetđầu" Then Sh1 = i
   If Sheets(i).Name = "Sheetcuối" Then Sh2 = i
Next

For j = Sh1 to Sh2 
   Sum3D = Sum3D + Application.Sum(Sheets(j).Range(rng)
Next
 
Lần chỉnh sửa cuối:
Upvote 0
Đại khái là:
Tìm vị trí dấu : (nếu có), so với vị trí dấu ! (nếu có), nếu dấu ! nằm sau dấu : thì là 3D
Nếu là 3D, tách địa chỉ ra 3 phần: tên sheet đầu, tên sheet cuối và rng

PHP:
For i = 1 to Sheets.Count
   If Sheets(i).Name = "Sheetđầu" Then Sh1 = i
   If Sheets(i).Name = "Sheetcuối" Then Sh2 = i
Next

For j = Sh1 to Sh2 
   Sum3D = Sum3D + Application.Sum(Sheets(j).Range(rng)
Next
Vấn đề là làm sao tìm được dấu ! và dấu : đây?
Reference do ta dùng chuột để chọn không phải là String sư phụ à?
-----------------------------
Nói thật, trước khi hỏi câu này em cũng đã tìm "nát" google rồi... Và đa phần người ta được hướng dẫn bằng phương pháp xử lý chuổi, tức "buộc" tham chiếu của hàm phải thuộc dạng String <--- Đây là điều em chẳng muốn tí nào
Câu hỏi đặt ra: MS đã dùng cách gì để xử lý Range 3D trong hàm SUM thế nhỉ?
(Giờ mới thấy ngay cả 1 hàm SUM đơn giản nhất chúng ta cũng chưa chắc gì bắt chước giống bác Bill được)
 
Lần chỉnh sửa cuối:
Upvote 0
em cũng đã tìm "nát" google rồi. người ta được hướng dẫn bằng phương pháp xử lý chuổi, tức "buộc" tham chiếu của hàm phải thuộc dạng String
Ẹc, mình chưa google, nhưng cũng có hướng đó

<--- Đây là điều em chẳng muốn tí nào
sao lại chẳng muốn? tại khi sử dụng phải gõ 1 cặp dấu nháy chăng?

Câu hỏi đặt ra: MS đã dùng cách gì để xử lý Range 3D trong hàm SUM thế nhỉ?
Nó có viết bằng VBA đâu?
 
Upvote 0
Ẹc, mình chưa google, nhưng cũng có hướng đó
sao lại chẳng muốn? tại khi sử dụng phải gõ 1 cặp dấu nháy chăng?
Nó có viết bằng VBA đâu?
Đúng rồi sư phụ à! Đó là điều em không muốn, nó kỳ cục thế nào ấy, chẳng giống cách hành xử của bác Bill
Giờ em đang cần phương án giải quyết bài toán này:
- Khi dùng chuột chọn Sheet đầu, bấm giữ Ctrl rồi chọn Sheet cuối, sau đó chọn vùng, ta được 1 tham chiếu 3D
- Làm sao biến cái Range 3D ấy thành 1 chuổi là xem như bài toán đã được giải quyết xong!
(trong macro 4 cũng có hàm REFTEXT dùng để biến tham chiếu thành Text, thế nhưng em thí nghiệm vẫn chưa thành công)
 
Upvote 0
Nếu làm được việc này (chuyển reference thành chuỗi), sẽ tính được cả trường hợp Sum Intersect như trường hợp
=SUM(D2:F8 E6:H11)
bằng với =Sum(E6:F8)
 
Upvote 0
Web KT

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

Back
Top Bottom