RaoVat24h
Office Word

Tính toán khoảng cách giữa hai vị trí trong Excel [Với VBA]

Advertisement
Tuần trước, tôi đã đặt một bài viết về cách tạo bản đồ google tĩnh bằng excel bằng cách sử dụng API bản đồ tĩnh của Google . Cuối tuần này, tôi đã nghĩ đến việc tạo ra một số điều thú vị cho bạn trong Excel bằng cách sử dụng API ma trận khoảng cách của Google Maps . Bài viết này sẽ là một học tập với niềm vui hoặc bạn có thể nói tải về một số niềm vui trong excel với một số học tập.
Khoảng cách giữa hai nơi

Khoảng cách giữa hai nơi

Tải về file mẫu : TẠI ĐÂY


Làm thế nào trên excel bảng tính được thực hiện?

Trên excel có hai phần chính sau: 
1. Cách tính Khoảng cách và thời gian giữa hai địa điểm bằng API Google Maps 
2. Cách tạo hình dạng / hình ảnh chuyển động trên excel

Tính khoảng cách và thời gian giữa hai địa điểm

Sử dụng API ma trận khoảng cách của Google, bạn có thể tính khoảng cách giữa hai địa điểm. Bởi API ma trận Google Maps , bạn cũng có thể tính toán thời gian di chuyển hoặc thời lượng giữa hai địa điểm. Như bạn biết Khoảng cách và thời gian giữa hai địa điểm có thể khác nhau đối với các loại phương thức vận tải khác nhau như, Đi xe đạp, Xe hơi, Đi bộ, v.v., Google API cung cấp tính năng này để chuyển phương thức vận tải của bạn làm thông số đầu vào trong API.
API ma trận khoảng cách Google Maps sử dụng URL phải ở định dạng này: (được sao chép từ trang tài liệu trên google)
https://maps.googleapis.com/maps/api/distancematrix/ thông số

Thông số

Có rất nhiều khả năng của các thông số có thể được cung cấp để tạo bản đồ của bạn .. một lần nữa chi tiết hơn bạn có thể tìm thấy nó ở trên trang
Bạn có thể đọc thêm về API này bằng cách xem qua trang tài liệu Google API.
Sau đây là hàm sẽ trả về khoảng cách và thời gian giữa hai vị trí.
Function getDistanceAndTimeBetweenTwoPlaces() As Variant
' This function will return an array holding
' distance in meters and duration in seconds
Dim googleAPIRequest As XMLHTTP60
Dim domDoc As DOMDocument60
Dim xmlNodesList As IXMLDOMNodeList

Dim response(1) As Variant 'array to hold distance & duration

' API URL is formed in excel sheet config using excel formula.
' refer excel workbook for the API URL format
urlForDistance = Range("urlForDistance").Value

Set googleAPIRequest = New XMLHTTP60
' invoke the API to get the Distance Matrxi in XML format
googleAPIRequest.Open "GET", urlForDistance, False
googleAPIRequest.Send

' Get the response XML
Set domDoc = New DOMDocument60
domDoc.LoadXML googleAPIRequest.ResponseText

' Using xPath get the distance
Set xmlNodesList = domDoc.SelectNodes("//distance[1]/*")
response(0) = xmlNodesList(0).Text

' Using xPath get the duration
Set xmlNodesList = domDoc.SelectNodes("//duration[1]/*")
response(1) = xmlNodesList(0).Text

' Return response with distance and duration in array
getDistanceAndTimeBetweenTwoPlaces = response

' release memory

Set xmlNodesList = Nothing
Set domDoc = Nothing
Set googleAPIRequest = Nothing
End Function
Sử dụng đoạn mã trên, tôi có khoảng cách và thời gian giữa hai nơi.

Phần thú vị: Hoạt hình – Phương tiện di chuyển

di chuyển xe - trong Excel

di chuyển xe – trong Excel
Điều này được thực hiện trong hai phần:

1. Thay đổi hình ảnh dựa trên giá trị đã chọn trong menu thả xuống

Tôi sẽ giải thích chi tiết trong bài viết tiếp theo của tôi.

2. Di chuyển xe hoặc hình ảnh từ Trái sang Phải

Nó đơn giản. Tất cả bạn cần làm là có được một giá trị gia tăng sửa chữa và bắt đầu tăng số tiền “Trái” cho hình dạng đó. Bằng cách này, có vẻ như đối tượng đang di chuyển từ Trái sang phải. 
Để hiểu rõ hơn, bạn có thể đi qua dòng chú thích cho từng câu lệnh trong mã dưới đây.
Sub StartVehicleFromSourceToDestination()

Dim distanceAndDuration As Variant
Dim distance As Long
Dim Duration As Long

Application.ScreenUpdating = True
'get the distance and duration from the above function
distanceAndDuration = getDistanceAndTimeBetweenTwoPlaces
distance = distanceAndDuration(0)
Duration = distanceAndDuration(1) / 60

' divide distance and duration with an equal interval
' for a smooth moving shape (vehicle)
iduration = Duration / 160
idistance = distance / 160

' reset distance, duration, starting place of shape (vehicle)
resetData

' Now loop through 1 to total no of intervals
' 160 - same no as duration and distance are
' divided by
For i = 1 To 160

With ActiveSheet
' increment left with a fixed number in order to show vehicle
' moving from Left to right direction with same speed.
.Shapes("truck").IncrementLeft 2.18

' keep increasing the distance and duration with the same intervals
' calculated above to give an animated calculation effect.
.Range("distance").Value = Range("distance").Value + idistance
.Range("duration") = Range("duration") + iduration
' most importantly !! do not forget to put below
' statement. this will keep refreshing the screen
' and hence you would be able to see the vehicle
' moving with a constant speed
DoEvents
End With
Next
End Sub
Bây giờ bạn biết cách tính khoảng cách và thời gian thực hiện (thời gian) bằng excel bằng cách sử dụng API ma trận khoảng cách của Google
Đừng quên tải xuống trò chơi vui nhộn này và chơi với nó.

Tải về file mẫu : TẠI ĐÂY


Tải về, sử dụng nó và đừng quên cung cấp cho tôi phản hồi của bạn bằng cách gõ bình luận của bạn ở đây hoặc gửi email hoặc bạn có thể  tôi Bạn cũng có thể chia sẻ nó với bạn bè, đồng nghiệp của bạn hoặc bất cứ ai bạn muốn !!

Rate this post

DienDan.Edu.Vn

DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.
DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.
Cám ơn.

Đăng bình luận

(+84) (901) 369.468