Board logo

標題: 請問各位大大 在excel中如何以撰寫VBA使得自動以某特定儲存格內容命名並另存新檔 [打印本頁]

作者: LYL    時間: 2010-9-9 17:35     標題: 請問各位大大 在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

希望能夠獲得解答   謝謝
作者: kimbal    時間: 2010-9-9 20:26

回復 1# LYL

hello,
    可否發一下現在你用來運一個檔的代碼?
其實基本上再在之上自動在每一個檔運行的代碼就可以了.
作者: luhpro    時間: 2010-9-10 00:14

本帖最後由 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 後再往下複製即可得到你要的所有城市間的距離(公里數)

[attach]2753[/attach]

至於 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
應該不會有什麼問題才是




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)