Trục trặc khii sử dụng XY Chart Labeler trong Dynamic Chart (1 người xem)

Liên hệ QC

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

conghieu

Thành viên mới
Tham gia
22/3/08
Bài viết
15
Được thích
2
Trục trặc khi sử dụng XY Chart Labeler trong Dynamic Chart

Chào các anh chị, em có 1 đồ thị động và muốn dùng XY Chart Labeler để thêm các ghi chú cho đồ thị. Vấn đề em gặp phải là nếu đồ thị đứng yên thì không sao, chứ nó mà "động" là lung tung beng hết cả, các ghi chú không chịu "chạy" theo những dữ liệu còn lại hoặc có chạy nhưng không ăn khớp với những dữ liệu còn lại.

Vấn đề này em đã mô tả kỹ trong file đính kèm, mong các anh chị bớt thời gian nghiên cứu giúp em với.
 

File đính kèm

Lần chỉnh sửa cuối:
Cần phải hiểu cơ chế làm việc của XY Chart Labeler: XY Chart Labeler gán các text box lên đồ thị tại những point của đồ thị, và giá trị của label (tức text của text box), được gán từ 1 ô cụ thể trên bảng tính. Ta có thể kiểm chứng bằng cách click riêng 1 cái label do XY Chart Labeler tạo ra, và nhìn lên thanh công thức. Số lượng textbox cũng bị giới hạn, cụ thể bằng số lượng ô trong vùng mà nó được gán lần đầu tiên.

Khi bạn dùng Name động để gán cho label (Dynamic_Ghichu), có những cái sai sau:
- Khi bạn tăng dần điểm bắt đầu của đồ thị, vùng của Name dịch chuyển xuống dưới, đồ thị dịch chuyển qua trái. Nhưng địa chỉ ô trong thanh công thức của các text box không đổi. Các text box chỉ chạy lên chạy xuống theo point mới của đồ thị tại điểm đó, chứ không chạy qua trái theo point cũ.
- Khi tăng dần kích thước của đồ thị, các textbox của 30 points cũ cũng không dịch chuyển, (như khi tăng điểm bắt đầu). Các điểm mới tăng thêm vào đồ thị do không được gán label bằng XY Chart Label, nó sẽ tự gắn chart label với giá trị Y như mặc định của Excel.

Cách khắc phục:
Thay vì dùng 1 vùng động dịch chuyển, ta chiều ý anh Labeler, dùng 1 vùng cố định, nhưng dữ liệu thì lại động. Khi đó, textbox vẫn không chạy qua trái theo point, nhưng dữ liệu sẽ thay đổi theo point mới. Dùng hàm If để khi kích thước biểu đồ >30 sẽ thành trống.

Trong file kèm theo, tôi đã làm theo hướng này:
- Do dùng index lấy dữ liệu động cho vùng label, nên các ô ghi chú trống bị thành zero, tôi đã đổi ghi chú trống trong cột K thành khoảng trắng.
- Scrollbar trên, tôi thay linked value thành giá trị tháng bắt đầu, và sửa cả tiêu đề (từ tháng ... đến tháng ...)
- Một số name bạn đặt không đúng phép tắc nên thỉnh thoảng bị báo lỗi, tôi sửa lại cho hết lỗi và gọn hơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn anh PTM nhiều ạ, excel quả là mảnh đất đầy sáng tạo! Em xin phép được hỏi thêm anh mấy vấn đề sau:

1) Cách anh chuyển đổi empty cell thành blank cell và ngược lại?
Em thường gặp phải vấn đề này khi vẽ đồ thị, khi đó những blank cell thu được từ công thức (="") sẽ bị đồ thị hiểu là zero, mà không biết làm thế nào để đồ thị bỏ qua (không vẽ) những blank cell ấy.

Em gửi lên file em mới sửa để nhờ anh góp ý thêm, trong file này:
1) Vì khi tăng dần kích thước của đồ thị ra ngoài vùng dữ liệu của Labeler thì những điểm thêm vào sẽ tự động được gán các giá trị Y của nó, đây là điều không mong muốn. Em giải quyết vấn đề này bằng cách không giới hạn vùng dữ liệu cho Labeler, mà để vùng dữ liệu này lớn hết cỡ.

2) Vì cột "lưu lượng chất lỏng" thỉnh thoảng bị khuyết dữ liệu nên nếu gắn labels vào đường "lưu lượng chất lỏng" thì vô tình sẽ làm mất một số labels. Do đó em đã tạo thêm một cột dữ liệu giả (cột "Giả liệu") rồi gắn labels cho đường này. Đồng thời tạo khoảng trống phía trên đồ thị và đẩy các labels lên trên đó. Tuy nhiên nhìn cũng chưa gọn mắt lắm.
 

File đính kèm

Lần chỉnh sửa cuối:
1. Các Blank cell có giá trị "" từ công thức, sẽ hiện lên đồ thị như là zero. Cách thông thường là trong công thức thay vì gán "", hãy gán NA(). Ô lỗi không hiển thị lên biều đồ vì bị bỏ qua. Line hoặc XYScatter sẽ băng ngang qua point đó.

2. Công thức Label đã được gán nếu Length> 1 giá trị nào đó, Label sẽ là trống. Trong file mẫu là 30 và trong file này là 40. Tuy nhiên anh quên xử lý vụ Excel tự gán Label = Y value. Giải quyết theo cách đó là đúng và ổn rồi.

3. Dữ liệu cho Serie giả cho tất cả bằng zero làm chi? gán công thức cho nó tất cả đều là = Max(YTK). Vậy lúc nào serie này cũng nằm trên cao, cao nhất trong tất cả serie, và gán label cho nó trên đó.
 
Lần chỉnh sửa cuối:
Em cảm ơn anh PTM 1 lần nữa vì sự giúp đỡ nhiệt tình của anh, không ngờ mỗi lần đưa câu hỏi lại được anh giải đáp nhanh chóng và thấu đáo đến thế. Em đã add được comment cho đồ thị như ý muốn và cũng đã tối ưu hoá việc đặt name, chỉnh sửa scroll bar theo góp ý của anh. Cảm ơn anh và chúc anh sức khoẻ, hạnh phúc!
 
Web KT

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

Back
Top Bottom