Trong thời đại số hoá hiện nay, việc thu thập và xử lý dữ liệu từ các nguồn trực tuyến đã trở thành một nhu cầu thiết yếu đối với nhiều doanh nghiệp, nhà nghiên cứu và cá nhân. Microsoft Excel, một trong những công cụ bảng tính phổ biến nhất thế giới, không chỉ mạnh mẽ trong việc tính toán và phân tích dữ liệu mà còn cung cấp các tính năng cho phép người dùng “kéo” dữ liệu trực tiếp từ các website vào bảng tính một cách nhanh chóng và tự động. Bài viết này sẽ hướng dẫn bạn chi tiết cách sử dụng Excel để lấy dữ liệu từ website, bao gồm các phương pháp truyền thống, các công cụ tích hợp sẵn, cũng như các mẹo nâng cao giúp tối ưu hoá quy trình thu thập dữ liệu.
Có thể bạn quan tâm: Excel Format Number As Text: Hướng Dẫn Chi Tiết Và Các Mẹo Thực Tiễn
1. Tại sao nên lấy dữ liệu từ website bằng Excel?
1.1. Tiết kiệm thời gian và công sức
Thay vì phải sao chép thủ công từng bảng số, từng danh sách hoặc từng đoạn văn bản từ một trang web, Excel cho phép bạn tự động hoá quá trình này chỉ bằng vài cú click chuột. Điều này đặc biệt hữu ích khi bạn cần cập nhật dữ liệu định kỳ (ví dụ: giá cổ phiếu, tỷ giá ngoại tệ, thống kê thời tiết, v.v.).
1.2. Đảm bảo tính nhất quán và độ chính xác
Khi dữ liệu được lấy tự động, khả năng xảy ra lỗi do nhập tay sẽ giảm đáng kể. Ngoài ra, Excel cung cấp các công cụ kiểm tra và làm sạch dữ liệu (Power Query, Data Validation) giúp bạn nhanh chóng phát hiện và sửa chữa những bất thường.
1.3. Tích hợp dễ dàng với các công cụ phân tích
Sau khi dữ liệu đã được nhập vào Excel, bạn có thể sử dụng các tính năng mạnh mẽ như PivotTable, Power Pivot, Power BI, hoặc các hàm thống kê để thực hiện phân tích sâu hơn mà không cần di chuyển dữ liệu sang phần mềm khác.
Có thể bạn quan tâm: Excel Fixed Objects Will Move: Hiểu Và Giải Quyết Vấn Đề Đối Tượng Cố Định Khi Di Chuyển Trong Excel
2. Các phương pháp lấy dữ liệu từ website trong Excel
Excel cung cấp một loạt các công cụ và phương pháp để lấy dữ liệu từ web, tùy thuộc vào độ phức tạp của trang web và loại dữ liệu bạn muốn trích xuất. Dưới đây là ba phương pháp chính:
| Phương pháp | Khi nào sử dụng | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Power Query (Get & Transform) | Dữ liệu dạng bảng, HTML, CSV, JSON, XML | Giao diện trực quan, hỗ trợ làm sạch dữ liệu, cập nhật tự động | Không hoạt động tốt với các trang có JavaScript động |
| Web Query (Legacy) | Các trang web tĩnh, bảng HTML đơn giản | Đơn giản, nhanh chóng | Đã lỗi thời, không hỗ trợ các tính năng mới như Power Query |
| VBA + XMLHTTP/WinHTTP | Trang web cần đăng nhập, có JavaScript, hoặc API | Linh hoạt, có thể xử lý các yêu cầu phức tạp | Yêu cầu kiến thức lập trình, bảo trì khó hơn |
2.1. Sử dụng Power Query (Get & Transform)
Power Query là công cụ mạnh mẽ nhất hiện nay để lấy dữ liệu từ web. Nó cho phép bạn kết nối, trích xuất, biến đổi và tải dữ liệu vào Excel chỉ trong vài bước.
Bước 1: Mở Power Query
- Mở Excel (phiên bản 2026 trở lên hoặc Office 365).
- Chọn tab Data (Dữ liệu).
- Nhấn Get Data → From Other Sources → From Web.
Bước 2: Nhập URL và lựa chọn kết nối
- URL: Nhập địa chỉ trang web chứa dữ liệu bạn muốn lấy. Ví dụ:
https://www.worldometers.info/coronavirus/. - Connect: Nhấn OK. Nếu trang web yêu cầu xác thực (login), bạn sẽ cần chọn Basic, Windows, hoặc Web API tùy thuộc vào yêu cầu.
Bước 3: Chọn bảng dữ liệu
Power Query sẽ hiển thị danh sách các bảng HTML được phát hiện trên trang. Bạn có thể xem trước dữ liệu trong Navigator. Chọn bảng cần lấy (ví dụ: bảng thống kê COVID-19) và nhấn Transform Data để mở Power Query Editor.
Bước 4: Làm sạch và biến đổi dữ liệu
Trong Power Query Editor, bạn có thể thực hiện các thao tác:
- Remove Columns: Xóa các cột không cần thiết.
- Change Data Types: Đổi kiểu dữ liệu (ví dụ: từ Text sang Number).
- Filter Rows: Lọc dữ liệu theo điều kiện (ví dụ: chỉ lấy các quốc gia có ca nhiễm > 1,000).
- Split Column: Tách cột dựa trên dấu phân cách.
- Add Custom Column: Thêm cột tính toán bằng công thức M.
Sau khi hoàn thành, nhấn Close & Load → Close & Load To… để chọn cách tải dữ liệu (ví dụ: Table trong sheet mới).
Bước 5: Cập nhật dữ liệu
Khi dữ liệu trên website thay đổi, bạn chỉ cần nhấn Refresh (hoặc đặt lịch tự động) để lấy lại dữ liệu mới mà không cần thực hiện lại các bước trên.
2.2. Sử dụng Web Query (Legacy)
Mặc dù đã được thay thế bởi Power Query, Web Query vẫn hữu ích cho những người dùng Excel 2026/2026 hoặc khi cần một cách nhanh chóng để lấy dữ liệu từ một bảng HTML đơn giản.
Cách thực hiện:
- Data → Get External Data → From Web.
- Nhập URL và nhấn Go.
- Khi trang web hiển thị trong cửa sổ, di chuột đến bảng muốn lấy, bạn sẽ thấy một mũi tên xanh xuất hiện. Nhấp vào mũi tên để chọn toàn bộ bảng.
- Nhấn Import → Chọn vị trí trong sheet để đặt dữ liệu.
Lưu ý: Web Query không hỗ trợ các trang có nội dung được tạo bằng JavaScript (ví dụ: dữ liệu tải động). Đối với các trường hợp này, bạn cần dùng Power Query hoặc VBA.
2.3. Sử dụng VBA để lấy dữ liệu động
Khi trang web sử dụng JavaScript để tải dữ liệu (ví dụ: AJAX), Power Query và Web Query không thể truy cập trực tiếp. Trong trường hợp này, bạn có thể:
- Gửi yêu cầu HTTP tới API (nếu trang web cung cấp API công khai).
- Sử dụng thư viện Selenium để tự động hoá trình duyệt và lấy dữ liệu.
- Sử dụng VBA + XMLHTTP/WinHTTP để gửi yêu cầu và phân tích HTML.
Ví dụ: Lấy dữ liệu JSON từ một API
Giả sử bạn muốn lấy tỷ giá hối đoái từ API https://api.exchangerate-api.com/v4/latest/USD. Dưới đây là đoạn mã VBA:
Sub GetExchangeRates() Dim http As Object Dim json As Object Dim url As String Dim i As Long Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("ExchangeRates") url = "https://api.exchangerate-api.com/v4/latest/USD" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", url, False http.send If http.Status = 200 Then Set json = JsonConverter.ParseJson(http.responseText) ' Đầu tiên ghi ngày cập nhật ws.Range("A1").Value = "Date" ws.Range("B1").Value = json("date") ' Ghi tiêu đề cột ws.Range("A2").Value = "Currency" ws.Range("B2").Value = "Rate" i = 3 Dim key As Variant For Each key In json("rates").Keys ws.Cells(i, 1).Value = key ws.Cells(i, 2).Value = json("rates")(key) i = i + 1 Next key Else MsgBox "Error: " & http.Status & " - " & http.statusText End If
End Sub
Yêu cầu: Để parse JSON trong VBA, bạn cần thêm module JsonConverter (có sẵn trên GitHub – VBA‑JSON). Nhập module này vào dự án VBA trước khi chạy.
Ví dụ: Lấy dữ liệu từ trang web có JavaScript bằng Selenium
- Cài đặt SeleniumBasic (thư viện VBA cho Selenium).
- Thêm Reference tới Selenium Type Library trong VBA.
- Viết mã:
Sub GetDynamicTable() Dim driver As New Selenium.ChromeDriver Dim url As String Dim tbl As Object Dim rows As Object Dim r As Long, c As Long url = "https://example.com/dynamic-table" driver.Start driver.Get url Application.Wait Now + TimeValue("00:00:05") ' Đợi trang tải hoàn toàn Set tbl = driver.FindElementByCss("table#myTable") Set rows = tbl.FindElementsByTag("tr") Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("DynamicData") ws.Cells.Clear For r = 1 To rows.Count Dim cells As Object Set cells = rows(r - 1).FindElementsByTag("td") If cells.Count = 0 Then Set cells = rows(r - 1).FindElementsByTag("th") ' tiêu đề For c = 1 To cells.Count ws.Cells(r, c).Value = cells(c - 1).Text Next c Next r driver.Quit
End Sub
Lưu ý: Selenium cho phép bạn giả lập hành vi người dùng (click, scroll, nhập dữ liệu) để tải nội dung động trước khi trích xuất.
Có thể bạn quan tâm: Cách Tìm Văn Bản Trong Ô Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Các lưu ý quan trọng khi lấy dữ liệu từ website
3.1. Tôn trọng điều khoản sử dụng (Terms of Service)
Nhiều website cấm việc “scraping” (lấy dữ liệu tự động) nếu không có sự cho phép. Trước khi thực hiện, hãy đọc robots.txt và Terms of Service để chắc chắn bạn không vi phạm pháp luật hoặc chính sách của trang.
3.2. Xử lý dữ liệu không đồng nhất

Có thể bạn quan tâm: Excel Gantt Chart Template Free: Hướng Dẫn Chi Tiết Tạo Và Sử Dụng Biểu Đồ Gantt Miễn Phí Trong Excel
- Định dạng ngày: Các trang web có thể sử dụng định dạng ngày khác nhau (MM/DD/YYYY, DD/MM/YYYY). Sử dụng Power Query để chuẩn hoá.
- Số thập phân: Dấu thập phân có thể là “.” hoặc “,” tùy quốc gia. Đặt Locale trong Power Query để chuyển đổi đúng.
- Dữ liệu thiếu: Dùng Replace Errors hoặc Fill Down để xử lý.
3.3. Giới hạn tốc độ (Rate Limiting)
Nếu bạn gửi quá nhiều yêu cầu trong một khoảng thời gian ngắn, server có thể chặn IP của bạn. Để tránh, bạn có thể:
- Thêm delay (ví dụ:
Application.Wait) trong VBA. - Sử dụng API key nếu website cung cấp (thường sẽ có giới hạn cao hơn).
3.4. Bảo mật thông tin đăng nhập
Khi cần đăng nhập để lấy dữ liệu, không nên lưu mật khẩu dưới dạng plain text trong file Excel. Thay vào đó:
- Sử dụng Windows Credential Manager và truy xuất bằng VBA.
- Lưu mật khẩu trong Protected View hoặc Encrypted XML.
4. Các ví dụ thực tế: 10 kịch bản lấy dữ liệu từ website bằng Excel
4.1. Lấy giá cổ phiếu từ Yahoo Finance
- Vào Data → Get Data → From Web.
- URL:
https://finance.yahoo.com/quote/MSFT/history?p=MSFT. - Chọn bảng lịch sử giá, biến đổi cột Date sang kiểu Date và Close sang Number.
- Tự động cập nhật mỗi ngày bằng Refresh All.
4.2. Lấy thời tiết hiện tại từ OpenWeatherMap API
- Đăng ký API key trên https://openweathermap.org/.
- Sử dụng VBA (như ví dụ trong mục 2.3) để gửi GET request:
https://api.openweathermap.org/data/2.5/weather?q=Hanoi&appid=YOUR_KEY&units=metric. - Parse JSON và đưa nhiệt độ, độ ẩm, mô tả thời tiết vào sheet.
4.3. Lấy danh sách sản phẩm từ một trang thương mại điện tử (ví dụ: Amazon)
- Amazon không cho phép scraping công khai, nhưng bạn có thể dùng Amazon Product Advertising API (cần đăng ký).
- Sử dụng VBA để gọi API, lấy tên sản phẩm, giá, rating và lưu vào Excel.
4.4. Lấy dữ liệu bảng xếp hạng FIFA World Rankings
- URL:
https://www.fifa.com/fifa-world-ranking/men. - Power Query sẽ nhận dạng bảng “World Ranking”.
- Làm sạch: Xóa cột không cần, đổi kiểu dữ liệu, lọc top 20.
4.5. Thu thập dữ liệu bất động sản từ Zillow (USA)
- Dùng Zillow API (cần key).
- Gửi request với tham số địa chỉ hoặc ZIP code, nhận JSON trả về.
- VBA parse và đưa thông tin như giá trung bình, diện tích, số phòng.
4.6. Lấy dữ liệu lịch học từ một hệ thống LMS (Learning Management System)
- Nhiều LMS cung cấp CSV export qua URL.
- Sử dụng Data → From Text/CSV với URL (có thể cần token).
- Power Query tự động tải CSV và chuyển đổi.
4.7. Lấy tỷ giá hối đoái thời gian thực từ European Central Bank
- URL XML:
https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml. - Data → Get Data → From XML.
- Chọn node
Cubechứa tỷ giá, chuyển thành bảng.
4.8. Lấy dữ liệu COVID‑19 toàn cầu từ WHO
- WHO cung cấp file CSV:
https://covid19.who.int/WHO-COVID-19-global-data.csv. - Data → From Text/CSV → Nhập URL.
- Tự động cập nhật hàng ngày.
4.9. Lấy danh sách phim mới ra mắt từ IMDb
- IMDb không cho phép scraping, nhưng có IMDb API (RapidAPI).
- Gửi GET request tới endpoint “Most Popular Movies”.
- VBA parse JSON, lấy tiêu đề, năm, rating.
4.10. Lấy dữ liệu giao dịch tiền điện tử từ CoinGecko
- API endpoint:
https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1. - Sử dụng Power Query → From Web → Advanced → nhập URL.
- Chọn “JSON” và chuyển đổi thành bảng.
5. Tối ưu hoá quy trình lấy dữ liệu
5.1. Lập lịch tự động (Scheduled Refresh)
- Excel trên Desktop: Sử dụng Task Scheduler của Windows để mở file và chạy macro
RefreshAll. - Power Query trong Power BI Service: Đặt lịch refresh (hàng ngày, hàng giờ).
- Power Automate: Tạo flow tự động mở Excel, refresh và gửi email báo cáo.
5.2. Sử dụng Parameter để linh hoạt URL
Trong Power Query, bạn có thể tạo Parameter (ví dụ: CountryCode) và sử dụng trong URL:
let Country = Excel.CurrentWorkbook(){Name="CountryParam"}Content{0}Column1, Source = Web.Page(Web.Contents("https://example.com/data?country=" & Country))
in Source
Khi thay đổi giá trị trong ô CountryParam, dữ liệu sẽ tự động cập nhật cho quốc gia mới.
5.3. Xử lý dữ liệu lớn (Big Data)
- Disable Load cho các query trung gian để giảm tải bộ nhớ.
- Sử dụng Data Model (Power Pivot) để lưu trữ dữ liệu trong bộ nhớ (x64).
- Tận dụng Power Query Folding (đẩy phần lớn quá trình xử lý về phía server, nếu hỗ trợ).
6. Các công cụ và tài nguyên hỗ trợ
| Công cụ | Mô tả | Link |
|---|---|---|
| Power Query | Giao diện kéo‑thả, hỗ trợ nhiều nguồn dữ liệu | Excel → Data → Get Data |
| VBA‑JSON (JsonConverter.bas) | Thư viện parse JSON trong VBA | https://github.com/VBA-tools/VBA-JSON |
| SeleniumBasic | Tự động hoá trình duyệt Chrome/Firefox trong VBA | https://github.com/florentbr/SeleniumBasic |
| RapidAPI | Thị trường API, có nhiều API công cộng (IMDb, CoinGecko,…) | https://rapidapi.com/ |
| Postman | Kiểm tra API, tạo request mẫu trước khi đưa vào VBA | https://www.postman.com/ |
| Power Automate | Tự động hoá workflow, refresh Excel, gửi email | https://flow.microsoft.com/ |
7. Các lỗi thường gặp và cách khắc phục
| Lỗi | Nguyên nhân | Giải pháp |
|---|---|---|
| “Web page contains no tables” | Trang không có bảng HTML hoặc dữ liệu được tải bằng JavaScript. | Dùng Power Query → From Web (Advanced) để nhập URL API, hoặc dùng Selenium để lấy dữ liệu động. |
| “Data format error” | Kiểu dữ liệu không khớp (ví dụ: Text thay vì Number). | Trong Power Query, sử dụng Change Type và thiết lập Locale phù hợp. |
| “Access denied” / 403 | Yêu cầu cần token hoặc cookie. | Thêm header Authorization trong Web.Contents hoặc sử dụng VBA + XMLHTTP với setRequestHeader. |
| “Query takes too long to run” | Dữ liệu quá lớn, không có folding. | Giảm số cột, lọc ngay tại nguồn (nếu API hỗ trợ), hoặc chia query thành nhiều bước. |
| “Object variable not set” (VBA) | Thư viện JSON chưa được import hoặc không có reference. | Thêm module JsonConverter và Tools → References → Microsoft Scripting Runtime. |
| “Cannot find a suitable driver for the source” | Phiên bản Excel không hỗ trợ nguồn (ví dụ: OData). | Cập nhật Office hoặc sử dụng Power Query (đã tích hợp OData). |
8. Kết luận
Việc lấy dữ liệu từ website vào Excel không còn là một nhiệm vụ khó khăn hay tốn thời gian như trước. Với sự hỗ trợ của Power Query, VBA, và các công cụ tự động hoá như Selenium hay Power Automate, bạn có thể xây dựng một quy trình thu thập dữ liệu đầy đủ, linh hoạt và tự động.
- Power Query là giải pháp nhanh chóng cho hầu hết các trang tĩnh hoặc API trả về JSON/CSV/XML.
- Web Query vẫn hữu ích cho các môi trường cũ hoặc khi cần một cách đơn giản nhất.
- VBA + API hoặc Selenium là lựa chọn mạnh mẽ khi dữ liệu được tải động hoặc cần xác thực.
Hãy luôn nhớ tôn trọng các quy định về quyền truy cập và bảo mật dữ liệu, đồng thời tối ưu hoá quy trình bằng cách sử dụng parameter, lập lịch tự động và làm sạch dữ liệu ngay trong Power Query. Khi bạn đã nắm vững những kỹ thuật này, việc tạo ra các báo cáo, dashboard hay mô hình phân tích dựa trên dữ liệu web sẽ trở nên dễ dàng và hiệu quả hơn bao giờ hết.
Chúc bạn thành công trong việc khai thác dữ liệu web bằng 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ẻ.
