Có thể bạn quan tâm: Cách Thêm Nhiều Dòng Trong Excel Nhanh Chóng Và Hiệu Quả
Mở Đầu
Trong quá trình làm việc với Microsoft Excel, đặc biệt là khi sử dụng các công cụ nâng cao như Power Query, Power Pivot, hoặc viết macro VBA, người dùng thường gặp phải một số lỗi không mong muốn. Một trong số những lỗi gây bối rối nhất, đặc biệt đối với những người mới bắt đầu hoặc thậm chí là những chuyên gia, là lỗi “Ambiguous name detected” (tạm dịch: “Tên không rõ ràng đã được phát hiện”).
Bài viết này sẽ đi sâu vào phân tích nguyên nhân, hậu quả và cung cấp hướng dẫn chi tiết để khắc phục lỗi này, đồng thời đề xuất một số biện pháp phòng ngừa để tránh gặp lại trong tương lai. Nội dung được chia thành các phần chính:
- Giới thiệu tổng quan về lỗi “Ambiguous name detected”.
- Nguyên nhân phổ biến gây ra lỗi.
- Hậu quả và ảnh hưởng đến công việc.
- Các phương pháp khắc phục chi tiết (trong VBA, Power Query, Power Pivot, và môi trường Excel thông thường).
- Các biện pháp phòng ngừa và thực hành tốt.
- Kết luận và lời khuyên cuối cùng.
Có thể bạn quan tâm: Cách Thêm Nút Macro (macro Button) Vào Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
1. Giới Thiệu Tổng Quan Về Lỗi “Ambiguous Name Detected”
1.1 Định Nghĩa
Lỗi “Ambiguous name detected” xuất hiện khi Excel (hoặc môi trường lập trình liên quan như VBA) không thể xác định được một tên (name) cụ thể vì có nhiều đối tượng cùng mang tên đó trong cùng một scope (phạm vi). Khi Excel cố gắng biên dịch hoặc thực thi mã, nó sẽ dừng lại và thông báo lỗi, ngăn chặn việc thực hiện tiếp tục.
1.2 Khi Nào Lỗi Xuất Hiện?
- Khi chạy macro VBA có cùng tên hàm hoặc biến được khai báo ở nhiều module khác nhau.
- Khi tạo các named ranges (khoảng tên) trùng lặp trong các sheet khác nhau.
- Khi sử dụng Power Query / Power Pivot và tạo các query hoặc table có cùng tên.
- Khi nhập công thức trong ô có tham chiếu tới một tên không duy nhất.
1.3 Tầm Quan Trọng Của Việc Hiểu Rõ Lỗi
Hiểu rõ lỗi này không chỉ giúp bạn khắc phục nhanh mà còn giúp tối ưu cấu trúc dữ liệu, ngăn ngừa xung đột tên trong các dự án lớn, giảm thiểu thời gian debug và tăng hiệu suất làm việc.
Có thể bạn quan tâm: Add‑ins Trong Excel 2007: Hướng Dẫn Chi Tiết, Cài Đặt, Quản Lý Và Ứng Dụng Thực Tiễn
2. Nguyên Nhân Phổ Biến Gây Ra Lỗi
2.1 Trùng Tên Trong VBA
2.1.1 Hàm hoặc Sub Trùng Tên
' Module1
Public Sub ProcessData() '...
End Sub ' Module2
Public Sub ProcessData() '...
End Sub
Hai hàm ProcessData ở hai module khác nhau gây ra xung đột vì VBA không phân biệt module khi gọi hàm mà không chỉ định module.
2.1.2 Biến Toàn Cục (Public) Trùng Lặp
' Module1
Public totalSales As Double ' Module2
Public totalSales As Double
Khi cả hai biến này được khai báo Public, Excel không biết nên dùng biến nào.
2.2 Trùng Tên Khi Định Nghĩa Named Ranges
- Named Range trên toàn workbook: Nếu bạn tạo một named range “Revenue” trên Sheet1 và sau đó tạo một named range “Revenue” trên Sheet2 (mặc dù Excel cho phép tạo trong scope của sheet, nhưng nếu bạn vô tình để scope là workbook, sẽ gây xung đột).
2.3 Trùng Tên Trong Power Query (M Language)
Trong Power Query, mỗi query được đặt tên và có thể xuất ra một bảng trong Excel. Khi hai query có cùng tên, Power Query sẽ báo lỗi “Ambiguous name detected”.
let Source = Excel.CurrentWorkbook(){Name="SalesData"}Content, //...
in Source
Nếu bạn tạo một query khác cũng đặt tên “SalesData”, Excel sẽ không biết nên trả về bảng nào.
2.4 Trùng Tên Trong Power Pivot (Data Model)
Power Pivot cho phép tạo measures, calculated columns, và tables. Khi bạn đặt cùng một tên cho hai measures hoặc tables, Data Model sẽ phát sinh lỗi tương tự.
2.5 Lỗi Khi Sử Dụng Add-ins và Thư Viện Bên Ngoài
Một số add-in (như các công cụ phân tích dữ liệu) có thể tự động tạo các hàm hoặc tên biến. Nếu chúng trùng với những gì bạn tự định nghĩa, lỗi sẽ xuất hiện.
3. Hậu Quả và Ảnh Hưởng Đến Công Việc
| Hậu quả | Mô tả chi tiết |
|---|---|
| Ngừng thực thi macro | Khi lỗi xuất hiện, VBA dừng lại ngay lập tức, làm mất thời gian và dữ liệu chưa lưu. |
| Kết quả công thức sai | Nếu một công thức tham chiếu tới named range không duy nhất, Excel sẽ trả về lỗi #NAME? hoặc giá trị không mong muốn. |
| Mất tính đồng nhất trong Data Model | Trùng tên trong Power Pivot gây lỗi khi tạo báo cáo Power View hoặc Power BI, làm gián đoạn quá trình phân tích. |
| Khó khăn trong việc bảo trì | Khi dự án lớn, việc tìm ra nguồn gốc xung đột tên trở nên phức tạp, gây tốn công sức debug. |
| Rủi ro dữ liệu | Nếu lỗi không được phát hiện, có thể dẫn tới việc xuất dữ liệu sai, ảnh hưởng đến quyết định kinh doanh. |
4. Các Phương Pháp Khắc Phục Chi Tiết

Có thể bạn quan tâm: Cách Thêm Power Query Vào Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
4.1 Khắc Phục Trong VBA
4.1.1 Kiểm Tra và Đổi Tên Hàm/Procedure
- Mở VBA Editor (Alt + F11).
- Sử dụng Find (Ctrl + F) để tìm toàn bộ tên đang gây xung đột.
- Đổi tên một trong các hàm/sub để chúng trở nên duy nhất, ví dụ:
' Trước
Public Sub ProcessData() '...
End Sub ' Sau (đổi tên)
Public Sub ProcessData_Sheet1() '...
End Sub
4.1.2 Sử Dụng Từ Khóa Private
Nếu hàm chỉ dùng trong một module, khai báo Private để giới hạn phạm vi:
Private Sub ProcessData() '...
End Sub
4.1.3 Đánh Giá Biến Public
- Xác định biến nào thực sự cần
Public. Nếu không cần, chuyển thànhDim(local) hoặcPrivate. - Đổi tên biến trùng lặp.
4.1.4 Kiểm Tra Tham Chiếu Thư Viện
- Vào Tools > References trong VBA Editor.
- Bỏ chọn các thư viện không cần thiết hoặc có xung đột.
- Đảm bảo không có thư viện cùng phiên bản được tham chiếu hai lần.
4.2 Khắc Phục Named Ranges
4.2.1 Kiểm Tra Danh Sách Named Ranges
- Vào Formulas > Name Manager.
- Kiểm tra cột Scope: nếu là Workbook, xem xét đổi thành Worksheet hoặc đổi tên.
4.2.2 Đổi Tên Hoặc Xóa Trùng Lặp
- Đổi tên các named range trùng nhau (ví dụ:
Revenue_Sheet1,Revenue_Sheet2). - Hoặc xóa một trong số chúng nếu không cần thiết.
4.2.3 Sử Dụng Định Dạng Đặt Tên Nhất Quán
Áp dụng quy tắc đặt tên: SheetName_Description. Ví dụ: Sales_Jan2024.
4.3 Khắc Phục Trong Power Query
4.3.1 Kiểm Tra Danh Sách Query
- Mở Data > Queries & Connections.
- Kiểm tra danh sách các query và đảm bảo mỗi query có tên duy nhất.
4.3.2 Đổi Tên Query
- Nhấp chuột phải vào query, chọn Rename.
- Đặt tên mới, tránh dùng ký tự đặc biệt hoặc khoảng trắng (ví dụ:
SalesData_2024).
4.3.3 Kiểm Tra M Code
Nếu bạn sao chép mã M từ một query sang query khác, chắc chắn thay đổi các phần tên:
let Source = Excel.CurrentWorkbook(){Name="SalesData_2024"}Content, //...
in Source
4.4 Khắc Phục Trong Power Pivot (Data Model)
4.4.1 Kiểm Tra Measures và Tables
- Vào Power Pivot > Manage.
- Kiểm tra Tables, Columns, và Measures trong tab Diagram View.
- Đổi tên các đối tượng trùng lặp.
4.4.2 Sử Dụng Tiền Tố
Áp dụng tiền tố cho các đối tượng: tbl_, msr_, col_. Ví dụ: tbl_Sales, msr_TotalRevenue.
4.4.3 Kiểm Tra Các Tên Được Tự Động Tạo Bởi Add-in
Nếu bạn sử dụng add-in tạo các measures tự động, hãy kiểm tra và sửa đổi tên để tránh trùng lặp.
4.5 Khắc Phục Khi Sử Dụng Add-ins
- Xác định add-in: Vào File > Options > Add-ins.
- Kiểm tra danh sách Active Add-ins và Disabled Add-ins.
- Nếu một add-in tạo ra hàm trùng với hàm tự viết, cân nhắc đổi tên hàm hoặc tắt add-in nếu không cần.
4.6 Kiểm Tra Toàn Bộ Workbook
4.6.1 Sử Dụng Macro Kiểm Tra Trùng Tên
Bạn có thể viết một macro nhanh để liệt kê tất cả các tên trong workbook và phát hiện trùng lặp:
Sub ListDuplicateNames() Dim nm As Name Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") For Each nm In ThisWorkbook.Names If dict.Exists(nm.Name) Then Debug.Print "Duplicate: " & nm.Name & " (Scope: " & nm.Parent.Name & ")" Else dict.Add nm.Name, 1 End If Next nm
End Sub
Chạy macro này trong Immediate Window (Ctrl + G) để xem danh sách các tên trùng lặp.
4.6.2 Kiểm Tra Module VBA Tự Động
Sub FindDuplicateProcedures() Dim vbComp As VBIDE.VBComponent Dim procName As String Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") For Each vbComp In ThisWorkbook.VBProject.VBComponents For Each procName In vbComp.CodeModule.ProcStartLine If dict.Exists(procName) Then Debug.Print "Duplicate Procedure: " & procName & " in " & vbComp.Name Else dict.Add procName, vbComp.Name End If Next procName Next vbComp
End Sub
(Lưu ý: Để chạy macro này, bạn cần bật Trust access to the VBA project object model trong Macro Settings).
5. Các Biện Pháp Phòng Ngừa và Thực Hành Tốt
5.1 Quy Tắc Đặt Tên Nhất Quán
| Loại đối tượng | Tiền tố đề xuất | Ví dụ |
|---|---|---|
| Named Range (Workbook) | wr_ | wr_TotalRevenue |
| Named Range (Worksheet) | ws_SheetName_ | ws_Sales_Total |
| VBA Function | fn_ | fn_CalculateTax |
| VBA Sub | sub_ | sub_ExportData |
| VBA Variable (Public) | g_ (global) | g_ExchangeRate |
| Query (Power Query) | qry_ | qry_Sales2024 |
| Table (Power Pivot) | tbl_ | tbl_Products |
| Measure (Power Pivot) | msr_ | msr_GrossMargin |
5.2 Sử Dụng Scope Rõ Ràng
- Khi tạo named range, luôn xác định Scope (Workbook hoặc Worksheet) một cách có ý thức.
- Tránh đặt named range ở scope Workbook nếu chỉ dùng trong một sheet.
5.3 Kiểm Tra Trước Khi Lưu
- Tạo Macro kiểm tra trùng lặp (như trong mục 4.6) và chạy trước khi lưu phiên bản cuối.
- Đặt validation rule trong quy trình làm việc nhóm: mỗi thành viên phải kiểm tra trước khi commit.
5.4 Quản Lý Version và Tài Liệu
- Ghi chú trong tài liệu dự án mỗi khi tạo mới một hàm, named range, hoặc query.
- Sử dụng Comment Block trong VBA để mô tả mục đích và phạm vi sử dụng.
'=====================================================
' Module: modDataProcessing
' Purpose: Xử lý dữ liệu bán hàng tháng 1/2026
' Author : Nguyễn Văn A
' Date : 15/03/2026
'=====================================================
5.5 Đào Tạo Người Dùng
- Đào tạo nhân viên về quy tắc đặt tên và cách kiểm tra trùng lặp.
- Cung cấp mẫu workbook chuẩn với các tên đã được chuẩn hoá.
6. Kết Luận
Lỗi “Ambiguous name detected” trong Excel không phải là một vấn đề hiếm gặp, nhưng với kiến thức đúng đắn và quy trình làm việc chặt chẽ, bạn hoàn toàn có thể phát hiện, khắc phục và ngăn ngừa lỗi này một cách hiệu quả. Các bước quan trọng bao gồm:
- Xác định nguồn gốc: Kiểm tra VBA, named ranges, Power Query, Power Pivot và add-ins.
- Sửa đổi tên: Đổi tên hoặc giới hạn scope để đảm bảo tính duy nhất.
- Áp dụng quy tắc đặt tên: Sử dụng tiền tố, hậu tố và scope rõ ràng.
- Kiểm tra tự động: Sử dụng macro kiểm tra trùng lặp trước khi lưu.
- Đào tạo và tài liệu hoá: Đảm bảo mọi thành viên trong nhóm hiểu và tuân thủ.
Bằng cách thực hiện những biện pháp trên, bạn không chỉ giải quyết được lỗi hiện tại mà còn xây dựng một môi trường làm việc bảo trì dễ dàng, độ tin cậy cao, và tối ưu hoá hiệu suất cho mọi dự án Excel của mình.
Lưu ý cuối cùng: Khi gặp lỗi “Ambiguous name detected”, đừng vội “đóng” workbook và bỏ qua. Hãy dành thời gian phân tích và sửa chữa ngay, vì một tên duy nhất không chỉ giúp mã chạy mượt mà mà còn là nền tảng cho công việc dữ liệu chuyên nghiệp trong tương lai.
Chúc bạn thành công trong việc loại bỏ mọi xung đột tên và tận hưởng trải nghiệm làm việc mượt mà với Excel!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
