如何在 Excel 中讓圖形大小根據指定儲存格的數值自動調整?
在 Excel 中,圓形、矩形或自訂圖形等常用於強化視覺效果、打造儀表板或說明資料。有時您可能希望圖形大小能動態反映特定儲存格中的數值——例如建立進度指示器、視覺狀態顯示,或單純讓報表更具互動性與直觀性。然而,Excel 並未內建直接功能,可自動將圖形大小與儲存格內容連結。本文將介紹實用方法,協助您根據指定儲存格的數值自動調整圖形大小,讓您的 Excel 專案更加動態且富有視覺意義。
使用 VBA 程式碼根據指定儲存格數值自動調整圖形大小
若要讓圖形根據特定儲存格輸入的數值自動調整大小,您可以運用 VBA 巨集。此方法特別適合用於自動化儀表板元件,或在無需手動調整每個圖形的情況下,直觀突顯資料的變化。以下 VBA 程式碼可將工作表中圖形的大小與儲存格數值緊密連結。
請依照下列步驟操作:
1. 以滑鼠右鍵按一下包含您要調整大小之圖形的工作表標籤,然後從內容功能表中選取檢視程式碼,即可開啟該工作表的程式碼編輯器視窗。
2. 在 Microsoft Visual Basic for Applications 視窗中,請將下列 VBA 程式碼複製並貼上至程式碼視窗,務必貼到包含您圖形的工作表程式碼頁面中。
VBA 程式碼:在 Excel 中根據指定儲存格數值自動調整圖形大小
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row = 2 And Target.Column = 1 Then
Call SizeCircle("Oval 2", Val(Target.Value))
End If
End Sub
Sub SizeCircle(Name As String, Diameter)
Dim xCenterX As Single
Dim xCenterY As Single
Dim xCircle As Shape
Dim xDiameter As Single
On Error GoTo ExitSub
xDiameter = Diameter
If xDiameter > 10 Then xDiameter = 10
If xDiameter < 1 Then xDiameter = 1
Set xCircle = ActiveSheet.Shapes(Name)
With xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints(xDiameter)
.Height = Application.CentimetersToPoints(xDiameter)
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Height / 2)
End With
ExitSub:
End Sub 說明與注意事項:
- 在此程式碼中,「Oval 2」 即為您要調整大小的圖形名稱。請務必確認此名稱與選擇窗格(開始 > 尋找與選取 > 選擇窗格)中顯示的名稱完全一致,以免發生錯誤!
- 僅當變更儲存格 A2(即第 2 列、第 1 欄)時,此程式碼才會觸發。若要改用其他儲存格,請據此調整這些值。
- 圖形大小由儲存格數值決定,該數值代表以公分為單位的直徑。程式碼已設定上限 10 公分 與下限 1 公分,避免產生極端縮放問題。
- 若輸入的數值超出此範圍(小於 1 或大於 10),圖形將自動調整為最接近的限制值。
- 若找不到指定的圖形名稱,或輸入值非數字,程式碼將自動忽略該操作,且不會顯示任何錯誤提示。
若有多個圖形需根據數值在不同儲存格中自動調整大小(例如建立一系列視覺化指示器或量表),您可以使用下方所示的擴充版 VBA 解決方案。
VBA 程式碼:在 Excel 中根據不同指定儲存格的數值自動調整多個圖形大小
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xAddress As String
On Error Resume Next
If Target.CountLarge = 1 Then
xAddress = Target.Address(0, 0)
If xAddress = "A1" Then
Call SizeCircle("Oval 1", Val(Target.Value))
ElseIf xAddress = "A2" Then
Call SizeCircle("Smiley Face 3", Val(Target.Value))
ElseIf xAddress = "A3" Then
Call SizeCircle("Heart 2", Val(Target.Value))
End If
End If
End Sub
Sub SizeCircle(Name As String, Diameter)
Dim xCenterX As Single
Dim xCenterY As Single
Dim xCircle As Shape
Dim xDiameter As Single
On Error GoTo ExitSub
xDiameter = Diameter
If xDiameter > 10 Then xDiameter = 10
If xDiameter < 1 Then xDiameter = 1
Set xCircle = ActiveSheet.Shapes(Name)
With xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints(xDiameter)
.Height = Application.CentimetersToPoints(xDiameter)
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Height / 2)
End With
ExitSub:
End Sub 重要注意事項與使用技巧:
If...ElseIf 區段中、End If 之前加入類似程式碼行,並依需求輸入正確的儲存格位址與圖形名稱即可。3. 修改並儲存程式碼後,按下 Alt+Q,即可關閉 Microsoft Visual Basic for Applications 視窗並返回工作表。
現在,每當您調整儲存格 A2 的數值,指定的圖形「Oval 2」便會即時自動縮放。請參閱截圖:

同樣地,當您更新儲存格 A1、A2 或 A3 的數值時,圖形「Oval 1」、「Smiley Face 3」和「Heart 2」會立即根據其連結的儲存格自動調整大小。請參閱下方範例:

額外提醒:
-僅當指定儲存格的數值變更時,調整大小才會生效。若您手動移動圖形或以其他方式變更其參考點,可能需要重新設定圖形位置。
-僅數值型資料可正常運作。空儲存格或文字輸入可能導致圖形縮至最小尺寸,或無法如預期調整。
-請確保您的 Excel 環境已啟用巨集,因為 VBA 解決方案需仰賴巨集權限才能執行。
注意:當儲存格數值超過 10(設定最大值為 10 公分)時,圖形大小將不再隨之增大;同樣地,若數值低於 1,則自動採用最小值(1 公分)。
疑難排解提示:若調整大小未如預期運作,請再次確認圖形名稱與儲存格參照完全相符、巨集已啟用,且工作表未受保護限制。若遇到執行階段錯誤,請確認指定圖形確實存在於作用中工作表上,且名稱拼寫正確。
總結建議:VBA 方法能實現動態即時調整,非常適合打造互動式儀表板與資料驅動報表。但使用者需熟悉圖形命名規則與 VBA 環境,並將活頁簿儲存為啟用巨集的格式(.xlsm),才能保留程式碼。此方法最適用於需要自動化功能,且可接受活頁簿啟用巨集的情境。
透過參考手動調整圖形大小
若您僅需偶爾調整圖形大小,或偏好不使用巨集的簡易做法,可依需求手動設定圖形尺寸,使其對應儲存格中的數值。此方法適用於無需自動化,或巨集使用受限的情境。
按一下您要調整大小的圖形,然後在設定圖形格式窗格中(以滑鼠右鍵按一下圖形 > 大小與屬性),手動輸入寬度與高度數值。您可以參考儲存格的尺寸來輸入這些數值。雖然此方法無法自動調整,但對於一次性調整來說,簡單又高效!
提示:使用此方法時,請務必在儲存格數值變更後手動更新圖形大小,因為圖形與儲存格之間並未建立連結。此方法可避免巨集所引發的安全性警告,但不支援即時視覺更新。
列出並匯出目前 Excel 工作表中的所有圖形:
匯出圖形工具是 Kutools for Excel 的一部分,能協助您快速列出目前工作簿中的所有圖形,並如以下截圖所示,一次將全部圖形匯出至指定資料夾。立即下載試用!(30 天免費試用)

相關文章:
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 LOOKUP:多重條件 VLookup | 多重數值 VLookup | 跨多個工作表 VLookup | 模糊查找…… | |
| 高級下拉列表:快速建立下拉式清單 | 相依式下拉式清單 | 多選下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位|移動欄位|切換隱藏欄位的可見狀態|比較範圍與欄位…… | |
| 精選功能:網格聚焦 | 設計視圖 |增強編輯欄 | 工作簿與工作表管理員 | 資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符,……)| 50+ 圖表 類型(甘特圖,……)| 40+ 實用公式(基於生日計算年齡,……)| 19 插入工具(插入二維碼,從路徑插入圖片,……)| 12 轉換工具(金額轉大寫,匯率轉換,……)| 7 合併和拆分工具(高級合併行,分割儲存格,……)|……以及更多 |
運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……
Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!
- 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
- 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
- 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!
所有 Kutools 增益集,一個安裝程式
Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!
- 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
- 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
- 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
- 30 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用
