返回列表 上一主題 發帖

請問各位大大 在excel中如何以撰寫VBA使得自動以某特定儲存格內容命名並另存新檔

請問各位大大 在excel中如何以撰寫VBA使得自動以某特定儲存格內容命名並另存新檔

各位大大

             小妹嘗試多次依然失敗想請問如何將附檔中依序將七個縣市(Sheet1)中的經緯度(X, Y欄)各別對七個網格(Sheet2)中的中心點經緯度(X,Y欄)利用畢氏定理求距離,接著轉換成公里並另存成一個新檔
也就是最後會有七個檔,但因為實際上有一千多個縣市,希望能夠利用巨集或VBA程式一次執行一千多筆資料不用一個個執行程式存檔,小妹現在用的程式為
1.
Public Function slength(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer)
slength = ((x1 - x2) ^ 2 + (y1 - y2) ^ 2) ^ 0.5 '畢氏定理
End Function
2.
Public Function km(degree)
km = degree * 110   '經緯度距離轉公里
End Function

希望能夠獲得解答   謝謝

縣市資料.rar (7.19 KB)

excel表單

回復 1# LYL

hello,
    可否發一下現在你用來運一個檔的代碼?
其實基本上再在之上自動在每一個檔運行的代碼就可以了.
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

本帖最後由 luhpro 於 2010-9-10 00:41 編輯

如果你急著要得到相關數據的話,我提供一個較簡單的方式 :

以下敘述中儲存格 H ~ M 分別對應到 Sheets(Sheet2) 的 2 ~ 7 列所代表的城市

H2=POWER(POWER(($F2-Sheet2!$B$2),2)+POWER(($G2-Sheet2!$C$2),2),0.5)*110
I2=POWER(POWER(($F2-Sheet2!$B$3),2)+POWER(($G2-Sheet2!$C$3),2),0.5)*110
.
.
.
M2==POWER(POWER(($F2-Sheet2!$B$7),2)+POWER(($G2-Sheet2!$C$7),2),0.5)*110

Mark H2 ~ M2 後再往下複製即可得到你要的所有城市間的距離(公里數)



至於 VBA 程式的方式大致上妳已經將關鍵的部分秀出來了,
存檔的話可以用
  for iI = 1 To 6

    此處計算公里數並放進相關的儲存格內

    sFileName = Sheets("Sheet2").Cells(iI + 1 , 1) '假設以 Sheets("Sheet2").[A2]  ~ [A7] 內容為檔名

    With Sheets("Sheet1")
      Application.DisplayAlerts = False
      .Copy
      With ActiveWorkbook
         .SaveAs sFileName
         .Close
      End With
      Application.DisplayAlerts = True
    End With
  Next iI
應該不會有什麼問題才是

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題