Tạo công thức IMPORTHTML như GoogleSheet trong excel

Liên hệ QC

letungquan246

Thành viên mới
Tham gia
21/5/18
Bài viết
3
Được thích
0
Hiện tại mình muốn import table từ những trang chứng khoán về excel nhưng chức năng PowerQuery không cho phép mình thay đổi URL một cách thoải mái như công thức được
Ví dụ như URL này : https://www.cophieu68.vn/snapshot.php?id=HPG
mình muốn thay đổi HPG thành VNM là điều không thể nếu dùng PowerQuery
nên mình xin hỏi có ai có thể giúp mình tạo một công thức Importhtml như GoogleSheet bằng VBA để có thể tiện trong việt thay đổi URL không ạ,
Xin cảm ơn
 
Bạn dùng power query thì bạn tìm hiểu M Function để nó tự động nhé. Có mấy bài trong mục Power Query đó. Nếu ko thì code VBA.
 
Tạo cái Name đường dẫn đưa vào M code chạy được đó bạn.
Chỉ có điều khi Get data về tôi thấy khá nhiều Table, không biết bạn muốn lấy Table nào.
Tôi thử lấy Table1.
Ở sheet Setting, bạn nhập mã cổ phiếu ở ô C5. Sang sheet Table1, click phải chuột vùng dữ liệu chọn Refresh.
 

File đính kèm

Tạo cái Name đường dẫn đưa vào M code chạy được đó bạn.
Chỉ có điều khi Get data về tôi thấy khá nhiều Table, không biết bạn muốn lấy Table nào.
Tôi thử lấy Table1.
Ở sheet Setting, bạn nhập mã cổ phiếu ở ô C5. Sang sheet Table1, click phải chuột vùng dữ liệu chọn Refresh.
Cái này hay quá, nhờ anh Cá ngừ F1 hướng dẫn chi tiết thêm chút xíu được kg anh ?
 
Tạo cái Name đường dẫn đưa vào M code chạy được đó bạn.
Chỉ có điều khi Get data về tôi thấy khá nhiều Table, không biết bạn muốn lấy Table nào.
Tôi thử lấy Table1.
Ở sheet Setting, bạn nhập mã cổ phiếu ở ô C5. Sang sheet Table1, click phải chuột vùng dữ liệu chọn Refresh.
Anh có thể làm ơn hướng dẫn em cách làm không ạ, em không biết cách tạo name ở đường dẫn M Code anh ơi
 
Trang này có Table "So sánh" để đưa ra các chỉ số của các đơn vị cùng ngành.

Nếu lấy nguồn theo chỉ số các Table thì có thể lỗi khi chọn các mã CK khác nhau, do Table "So sánh" này không cố định. Nên khi Get Data phải lấy đích danh Table "So sánh".

Tôi bổ sung File để Get data đích danh Table, chọn mã CK ở B5, đợi một chút (thường ngoài giờ hành chính thì quá trình refresh sẽ nhanh hơn).

M code:
Mã:
let
    Fname= Excel.CurrentWorkbook(){[Name="Path"]}[Content]{0} [Column1],
    Source = Web.Page(Web.Contents(Fname)),
    KetQua = Source{[Caption = "So sánh"]}[Data]
in
    KetQua

TB: Cái từ khóa Caption cũng vẫn là học từ sư phụ @ptm0412
 

File đính kèm

TB: Cái từ khóa Caption cũng vẫn là học từ sư phụ @ptm0412
Caption không phải từ khóa mà là tên column (field). Cú pháp
Mã:
Something = TableName{[Column1 = value1, Column2=value2, ...]}[Columni]
Trong đó
Cặp dấu {..} biểu thị việc truy xuất 1 dòng (1 record) (*)
Cặp dấu [...] bên trong {..} biểu thị cho 1 record (1 hoặc nhiều columns) (**)
Cặp dấu [] phía sau biểu thị cho việc truy xuất 1 column (***)

(*) có thể truy xuất 1 dòng bằng thứ tự dòng (như thường làm, thứ tự bắt đầu bằng 0)
(**) Có thể thử khai báo 1 record bằng Sth = [nick = "ptm0412", age = 60, post = 11664].
(***) Do column name là "Data" chứ không phải Data là từ khóa. Nếu muốn lấy column khác thì để tên column đó vào trong []. Điều đặc biệt ở đây là giá trị cột "Data" là Table nên PQ tự expand thành table luôn.

1636767668541.png
 
Caption không phải từ khóa mà là tên column (field). Cú pháp
Mã:
Something = TableName{[Column1 = value1, Column2=value2, ...]}[Columni]
Trong đó
Cặp dấu {..} biểu thị việc truy xuất 1 dòng (1 record) (*)
Cặp dấu [...] bên trong {..} biểu thị cho 1 record (1 hoặc nhiều columns) (**)
Cặp dấu [] phía sau biểu thị cho việc truy xuất 1 column (***)

(*) có thể truy xuất 1 dòng bằng thứ tự dòng (như thường làm, thứ tự bắt đầu bằng 0)
(**) Có thể thử khai báo 1 record bằng Sth = [nick = "ptm0412", age = 60, post = 11664].
(***) Do column name là "Data" chứ không phải Data là từ khóa. Nếu muốn lấy column khác thì để tên column đó vào trong []. Điều đặc biệt ở đây là giá trị cột "Data" là Table nên PQ tự expand thành table luôn.

View attachment 269100
Dạ dạ.
PQ còn quá nhiều thứ phải học ạ.
 
Dạ dạ.
PQ còn quá nhiều thứ phải học ạ.
Là do cứ copy code về xài mà không hiểu bản chất và cú pháp từng hàm. Vì lý do đó mà tôi viết tài liệu "hàm M cơ bản" đầu tiên trước khi đi vào tự viết code, thay vì thao tác tay.
 
Web KT

Bài viết mới nhất

Back
Top Bottom