Cách Sử Dụng Excel Để Lấy Dữ Liệu Từ Website: Hướng Dẫn Chi Tiết Từ A Đến Z

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.

Mục lục bài viết

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.

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ápKhi nào sử dụngƯu điểmNhược điểm
Power Query (Get & Transform)Dữ liệu dạng bảng, HTML, CSV, JSON, XMLGiao diện trực quan, hỗ trợ làm sạch dữ liệu, cập nhật tự độngKhô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/WinHTTPTrang web cần đăng nhập, có JavaScript, hoặc APILinh hoạt, có thể xử lý các yêu cầu phức tạpYê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

  1. Mở Excel (phiên bản 2026 trở lên hoặc Office 365).
  2. Chọn tab Data (Dữ liệu).
  3. 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:

  1. Data → Get External Data → From Web.
  2. Nhập URL và nhấn Go.
  3. 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.
  4. 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

  1. Cài đặt SeleniumBasic (thư viện VBA cho Selenium).
  2. Thêm Reference tới Selenium Type Library trong VBA.
  3. 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.

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

Excel Get Data From Website
Excel Get Data From Website
  • Đị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

  1. Vào Data → Get Data → From Web.
  2. URL: https://finance.yahoo.com/quote/MSFT/history?p=MSFT.
  3. Chọn bảng lịch sử giá, biến đổi cột Date sang kiểu Date và Close sang Number.
  4. 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 Cube chứ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 QueryGiao diện kéo‑thả, hỗ trợ nhiều nguồn dữ liệuExcel → Data → Get Data
VBA‑JSON (JsonConverter.bas)Thư viện parse JSON trong VBAhttps://github.com/VBA-tools/VBA-JSON
SeleniumBasicTự động hoá trình duyệt Chrome/Firefox trong VBAhttps://github.com/florentbr/SeleniumBasic
RapidAPIThị trường API, có nhiều API công cộng (IMDb, CoinGecko,…)https://rapidapi.com/
PostmanKiểm tra API, tạo request mẫu trước khi đưa vào VBAhttps://www.postman.com/
Power AutomateTự động hoá workflow, refresh Excel, gửi emailhttps://flow.microsoft.com/

7. Các lỗi thường gặp và cách khắc phục

LỗiNguyên nhânGiả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” / 403Yê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!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận