Nếu bạn muốn tạo trang tổng quan với biểu đồ thay đổi dữ liệu của nó theo các tùy chọn đã chọn, bạn có thể sử dụng các sự kiện trong VBA. Có, nó có thể được thực hiện. Chúng tôi sẽ không cần bất kỳ hộp thả xuống, máy cắt hoặc hộp kết hợp nào. Chúng tôi sẽ làm cho các ô có thể nhấp được và thay đổi dữ liệu để tạo biểu đồ từ ô đã chọn.

image

Làm theo các bước dưới đây để tạo biểu đồ động trong excel thay đổi theo lựa chọn ô.

Bước 1: Chuẩn bị dữ liệu trong Trang tính làm nguồn cho biểu đồ.

Ở đây tôi có một số dữ liệu mẫu từ các vùng khác nhau trong một trang tính. Tôi đặt tên nó là dữ liệu nguồn.

image

Bước 2: Lấy dữ liệu của một vùng cùng một lúc trên một trang tính khác.

  • Bây giờ hãy chèn một trang tính mới. Đặt tên thích hợp. Tôi đặt tên nó là “Trang tổng quan”.

  • Sao chép tất cả các tháng trong một cột. Viết tên một vùng liền kề với tháng.

image

Vì dữ liệu nguồn của tôi ở A2: D8 trên Biểu dữ liệu nguồn. Tôi sử dụng công thức dưới đây.

Data’!$A$1:$D$1,0))*

  • Chèn một biểu đồ bằng cách sử dụng dữ liệu này trên trang Bảng điều khiển. Tôi sử dụng một biểu đồ đường đơn giản. Ẩn nguồn của biểu đồ nếu bạn không muốn hiển thị chúng.

image

Bây giờ khi bạn thay đổi tên vùng trong D1, biểu đồ sẽ thay đổi theo. Bước tiếp theo là thay đổi tên vùng trong D1 khi bạn chọn một tùy chọn từ ô được chỉ định.

Bước 3: Thay đổi vùng khi bạn chọn tên vùng trong phạm vi được chỉ định. * Viết tên các vùng trong một dãy, em viết trong dãy A2: A4.

image

  • Nhấp chuột phải vào tên trang Bảng điều khiển và nhấp vào “Mã Xem”

tùy chọn để nhập trực tiếp vào Mô-đun trang tính trong VBE để chúng ta có thể sử dụng liên kết liên kết: / events-in-vba-the-worksheet-event-in-excel-vba [sự kiện bảng tính].

image

  • Bây giờ viết mã dưới đây trong VB Editor.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("A2:A4")) Is Nothing Then

Range("A2:A4").Interior.ColorIndex = xlColorIndexNone

Dim region As Variant

region = Target.value

On Error GoTo err:

Select Case region

Case Is = "Central"

Range("D1").value = region

Case Is = "East"

Range("D1").value = region

Case Is = "West"

Range("D1").value = region

Case Else

MsgBox "Invalid Option"

End Select

Target.Interior.ColorIndex = 8

End If

err:

End Sub

Và nó được thực hiện. Bây giờ, bất cứ khi nào bạn chọn một ô trong phạm vi A2: A4, giá trị của ô đó sẽ được gán cho D1 và dữ liệu của biểu đồ sẽ thay đổi tương ứng.

image

Tôi đã giải thích cách mã này hoạt động bên dưới. Bạn có thể hiểu nó và thực hiện các thay đổi theo yêu cầu của bạn. Tôi đã cung cấp các liên kết đến các chủ đề trợ giúp mà tôi đã sử dụng ở đây trong ví dụ này. Vì vậy, hãy kiểm tra chúng.

Mã đang hoạt động như thế nào?

If Not Intersect(Target, Range("A2:A4")) Is Nothing Then

Dòng này đặt tiêu điểm thành phạm vi A2: A4 để sự kiện SelectionChange chỉ kích hoạt khi lựa chọn nằm trong phạm vi A2: A4. Mã giữa If và End sẽ chỉ chạy nếu vùng chọn nằm trong phạm vi A2: A4. Bây giờ bạn có thể đặt nó theo yêu cầu của bạn để làm cho biểu đồ của bạn động.

Range("A2:A4").Interior.ColorIndex = xlColorIndexNone

Dòng này đặt màu của dải ô A2: A4 thành không.

region = Target.value

On Error GoTo err:

Trong hai dòng trên, chúng ta lấy giá trị của các ô được chọn trong vùng biến và bỏ qua bất kỳ lỗi nào xảy ra. không sử dụng dòng “On Error GoTo err:” cho đến khi bạn chắc chắn rằng bạn muốn bỏ qua bất kỳ lỗi nào xảy ra. Tôi đã sử dụng nó để tránh lỗi khi tôi chọn nhiều ô.

Select Case region

Case Is = "Central"

Range("D1").value = region

Case Is = "East"

Range("D1").value = region

Case Is = "West"

Range("D1").value = region

Case Else

MsgBox "Invalid Option"

End Select
Target.Interior.ColorIndex = 8

End If

err:

End Sub

Trước câu lệnh End If, chúng tôi thay đổi màu của tùy chọn đã chọn để nó được tô sáng. Sau đó câu lệnh If kết thúc và thẻ err: bắt đầu.

Câu lệnh On Error sẽ chuyển đến thẻ này nếu có bất kỳ lỗi nào xảy ra trong câu lệnh select.

Tải xuống tệp làm việc bên dưới.

image 48

Bài viết liên quan:

Bài viết phổ biến:

Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.