Tôi đã hướng dẫn Bạn cách lấy dữ liệu từ tệp Excel bằng ListObject và sử dụng truy vấn SQL trong VBA. Để khiến mọi thứ trở nên thú vị hơn, tôi nghĩ đã đến lúc phải làm điều gì đó khác biệt hơn. Trong bài viết này, tôi sẽ trình bày ngắn gọn cách lấy dữ liệu Excel bằng Python
Hôm nay chúng ta sẽ sử dụng cùng một dữ liệu ví dụ, như chúng ta đã sử dụng cho các phương pháp trước đây được đề cập ở trên
Tập thể dục
Mục tiêu của chúng tôi là có được số lượng hàng đáp ứng các tiêu chí của quốc gia nhất định và giá sản xuất tối thiểu [giống như trong các bài báo trước]
Trình soạn thảo mã Python
Tôi đã cài đặt PyCharm, đây là trình soạn thảo mã dành riêng cho Python. Trong bài viết này tôi sẽ không hướng dẫn Bạn cài đặt cái đó. Tất nhiên, đây không nhất thiết phải là PyCharm, nó có thể là trình chỉnh sửa mã khác, chẳng hạn như Visual Studio Code
Mã số
Khi bắt đầu dự án, Bạn cần nhập thư viện Pandas. Thư viện này rất cần thiết cho dữ liệu Excel. Nó giống như một kết nối giữa Python & Excel. Nó giống như Bạn đánh dấu vào hộp kiểm trong Tài liệu tham khảo VBE, nhưng trong thế giới Python
import pandas as pd
Cũng như các bài trước Bạn muốn tạo hàm thì bắt đầu với việc xác định hàm với 2 tham số – quốc gia và giá sản xuất như đã đề cập trong mục tiêu bài tập
Lưu ý rằng trong Python Bạn cần sử dụng def cho phụ hoặc hàm. Trong VBA Bạn cần Sub cho chương trình con hoặc Hàm cho chức năng
def countRowsForGivenParams[country: str, manufacturing_price: int]:
Cũng lưu ý rằng không cần khai báo biến trong Python. Điều tương tự cũng xảy ra với VBA, nhưng tôi thực sự thích khai báo ở mọi nơi có thể
Sau đó tải dữ liệu Excel vào Pandas pd bằng hàm read_excel – ít nhất cung cấp đường dẫn tệp [bao gồm tên tệp] cho dữ liệu Mẫu tài chính và tên của trang tính. Sổ làm việc sẽ được tải mà không cần mở tệp Excel.
financial_sample = pd.read_excel[io=r"C:\Users\plocitom\Desktop\Financial Sample.xlsx", sheet_name="Sheet1"]
Và cứ như thế Bạn đã tạo DataFrame – đối tượng Pandas được xây dựng
Sau đó, tạo bộ lọc được thực hiện từ 2 điều kiện – quốc gia được chỉ định và giá sản xuất được chỉ định
Lưu ý rằng trong Python Bạn cần sử dụng dấu bằng kép == để so sánh các giá trị, chỉ . Trong VBA trong cả hai trường hợp Bạn chỉ cần sử dụng into variable. In VBA in both cases You only need to use 1 dấu bằng.
df_filter = [financial_sample['Country'] == country] & \
[financial_sample['Manufacturing Price'] > manufacturing_price]
Cũng lưu ý rằng trong Python Bạn có thể hoặc thậm chí nên sử dụng & ký thay vì toán tử logic And
Sau đó, đặt bộ lọc bên trong Financial_sample và kiểm tra độ dài của Khung dữ liệu được lọc bằng hàm len
result = len[financial_sample[df_filter]]
Cuối cùng, trả lại kết quả, sử dụng từ khóa trả về, trong cùng một tuyên bố như trong các bài viết trước
Lưu ý rằng trong Python Bạn có thể thực hiện việc này trong 1 biến chuỗi bằng cách sử dụng dấu ngoặc đơn {} để đặt bên trong các giá trị của biến và đặt f trước chuỗi. Trong VBA, điều đó không thực sự khả thi
return f'Country: {country}; Manufacturing Minimum Price: {manufacturing_price}; Amount: {result}'
Cũng lưu ý rằng trong Python để trả về giá trị từ hàm Bạn có thể sử dụng cụm từ khóa return. Trong VBA để trả về giá trị của hàm Bạn cần sử dụng tên của nó và gán giá trị cho nó
gọi hàm
Để gọi hàm, lấy và kiểm tra kết quả, hãy sử dụng hàm in và Chạy mã
print[countRowsForGivenParams['Canada', 100]]
print[countRowsForGivenParams['Germany', 200]]
Lưu ý rằng in bằng Python giống như Gỡ lỗi. In trong VBA
Kết quả trả về dưới đây
Country: Canada; Manufacturing Minimum Price: 100; Amount: 60
Country: Germany; Manufacturing Minimum Price: 200; Amount: 40
Process finished with exit code 0
Các kết quả ở đây trong Python giống như trong ListObject và phương thức SQL ADODB trong VBA
Tập hợp tất cả lại với nhau
________số 8Tóm lược
Như Bạn có thể thấy có rất nhiều phương pháp để đạt được mục tiêu, không chỉ trong VBA. Ngoài ra để lấy dữ liệu Excel, có nhiều cách khác như sử dụng thư viện Pandas trong Python chẳng hạn. Hy vọng bạn tìm thấy phù hợp nhất cho chính mình
Tác giả. Tomasz Płociński
Tôi rất thạo VBA, Excel, cũng dễ dàng liên kết VBA với các ứng dụng Office khác [e. g. PowerPoint] và các ứng dụng bên ngoài [e. g. NHỰA CÂY]. Tôi cũng tham gia vào các quy trình RPA [WebQuery, DataCache, IBM Access Client Solutions], nơi tôi cũng có thể sử dụng bộ kỹ năng cơ bản về SQL của mình. Hiện tôi đang cố gắng mở rộng kiến thức của mình sang hướng TypeScript/JavaScript. Xem tất cả bài viết bằng Tomasz Płociński