Cách tự động chia tỷ lệ trục biểu đồ trong Excel

Việc tạo biểu đồ trong Excel vô cùng đơn giản, nhưng làm cách nào để phân chia tỷ lệ trục X và Y  cân xứng và đẹp mắt thì đang là vấn đề của không ít người dùng Excel. Trong bài viết này, UniTrain sẽ hướng dẫn bạn hai cách tự động để chia tỷ lệ trục biểu đồ Excel:

1. Sử dụng tính năng Format Axis trong Excel

2. Chạy mã VBA Excel

1. Sử dụng tính năng định dạng trục để thay đổi tỷ lệ trục biểu đồ trong Excel

Để tự động thay đổi trục biểu đồ bằng cách sử dụng tính năng Format Axis trong Excel, hãy cùng thao tác các bước dưới đây:

Bước 1: Tạo dữ liệu cho trục X và Y (như hình dưới).

Dataset for X and Y axis

Bước 2: Chèn biểu đồ cột 2-D bằng cách chọn ô B4 > Insert > chọn biểu tượng biểu đồ và chèn biểu đồ cột (như hình dưới).

Process of generating Bar Chart

Sau đó, biểu đồ cột sẽ hiển thị như hình dưới:

The Bar Chart

Bước 3: Nhấp chuột phải và chọn Format Axis

Selecting "Format Axis" from Bar Chart

Sau đó, chọn Axis option > Units > thay đổi thành 3000

change major unit using Axis Options feature to set chart axis scale

Bạn sẽ thấy Maximum Bounds sẽ tự động thay đổi thành từ 20000 thành 21000 và đơn vị của trục Y thay đổi từ 2000 thành 3000 như hình dưới:

The value scale of Y-axis changed automatically

Tuy nhiên, đối với trục X, người dùng không thể thay đổi tỷ lệ vì đang sử dụng văn bản thay vì giá trị. Đó là lý do tại sao người dùng giữ nguyên dữ liệu ngang của biểu đồ. Bạn nhấp chuột phải > chọn Format Axis > chọn Automatically select based on data trong mục Axis TypeAutomatic trong mục Vertical axis crosses.

Format Axis option on X-axis

2. Chạy mã VBA Excel để tự động thay đổi tỷ lệ trục biểu đồ

Cách thao tác:

Bước 1: Chọn Developer > Visual Basic.

selecting visual basic

Khi cửa sổ Microsoft Visual Basic for Applications hiển thị, bạn chọn Insert > Module.

Selection of module

Bước 2: Chèn mã dưới đây vào Module.

Function ChartAxisScale(sheetName As String, chartName As String, MinOrMax As String, _
ValueOrCategory As String, PrimaryOrSecondary As String, Value As Variant)
Dim chart As chart
Dim text As String
'Set the function to control the chart
Set chart = Application.Caller.Parent.Parent.Sheets(sheetName) _
.ChartObjects(chartName).chart
'Set Primary axis Value
If (ValueOrCategory = "Value" Or ValueOrCategory = "Y") _
And PrimaryOrSecondary = "Primary" Then
With chart.Axes(xlValue, xlPrimary)
If IsNumeric(Value) = True Then
If MinOrMax = "Max" Then .MaximumScale = Value
If MinOrMax = "Min" Then .MinimumScale = Value
Else
If MinOrMax = "Max" Then .MaximumScaleIsAuto = True
If MinOrMax = "Min" Then .MinimumScaleIsAuto = True
End If
End With
End If
'Set Primary axis Category
If (ValueOrCategory = "Category" Or ValueOrCategory = "X") _
And PrimaryOrSecondary = "Primary" Then
With chart.Axes(xlCategory, xlPrimary)
If IsNumeric(Value) = True Then
If MinOrMax = "Max" Then .MaximumScale = Value
If MinOrMax = "Min" Then .MinimumScale = Value
Else
If MinOrMax = "Max" Then .MaximumScaleIsAuto = True
If MinOrMax = "Min" Then .MinimumScaleIsAuto = True
End If
End With
End If
'Set secondary axis value
If (ValueOrCategory = "Value" Or ValueOrCategory = "Y") _
And PrimaryOrSecondary = "Secondary" Then
With chart.Axes(xlValue, xlSecondary)
If IsNumeric(Value) = True Then
If MinOrMax = "Max" Then .MaximumScale = Value
If MinOrMax = "Min" Then .MinimumScale = Value
Else
If MinOrMax = "Max" Then .MaximumScaleIsAuto = True
If MinOrMax = "Min" Then .MinimumScaleIsAuto = True
End If
End With
End If
'Set secondary axis category
If (ValueOrCategory = "Category" Or ValueOrCategory = "X") _
And PrimaryOrSecondary = "Secondary" Then
With chart.Axes(xlCategory, xlSecondary)
If IsNumeric(Value) = True Then
If MinOrMax = "Max" Then .MaximumScale = Value
If MinOrMax = "Min" Then .MinimumScale = Value
Else
If MinOrMax = "Max" Then .MaximumScaleIsAuto = True
If MinOrMax = "Min" Then .MinimumScaleIsAuto = True
End If
End With
End If
If IsNumeric(Value) Then text = Value Else text = "Auto"
ChartAxisScale = ValueOrCategory & " " & PrimaryOrSecondary & " " _
& MinOrMax & ": " & text
End Function
Sub Axis_Scale()
End Sub

Entering VBA code into the box

Sau đó, chọn Run > Run Sub/UserForm.

Run the VBA code

Sau khi chạy mã VBA, bạn có thể tạo user-defined function. Sau đó, quay lại trang tính Excel, chọn ô B20 và nhập:

=ChartAxisScale(“Sheet1″,”Chart 2″,”Max”,”Value”,”Primary”,C19)

Entering user defined function to change chart axis scale

Xem thêm

Khóa học Excel for Analysts

Khóa học Ứng dụng VBA trong Excel

Cách tra dữ liệu trên tab Excel

Cách kiểm tra phạm vi tên bằng Excel VBA

[Tải miễn phí] Excel Shortcuts for Win and Mac 

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

1 + 1 = ? (Nhập Haii để trả lời đúng)

Bài viết liên quan
Phím tắt Excel giúp tiết kiệm 90% thời gian nhập liệu

Trong quá trình xử lý dữ liệu bằng Excel, việc sử dụng các phím tắt không chỉ giúp tối ưu tốc độ làm việc mà còn tăng tính chính xác. Bài

Xem thêm
Ứng dụng hàm TEXTJOIN nâng cao trong Excel

1. Giới thiệu hàm TEXTJOIN và IF  Hàm TEXTJOIN trong Excel giúp nối các giá trị từ một phạm vi hoặc danh sách các ô, sử dụng dấu phân cách tùy

Xem thêm
30 tháng Tư rực rỡ, 01 tháng Năm ưu đãi bất ngờ

Mừng 50 năm thống nhất Đất nước, UniTrain ưu đãi đến 2.500.000 VNĐ trên học phí gốc cho học viên đăng ký các khóa combo. Hình thức online: 🔸Giảm 1.400.000đ trên học

Xem thêm
Nối các mảng dữ liệu trong Python

Trong quá trình xử lý dữ liệu với pandas, việc kết hợp nhiều bảng dữ liệu là thao tác rất phổ biến. Hàm concat() chính là công cụ mạnh mẽ giúp

Xem thêm