プロが教える店舗&オフィスのセキュリティ対策術

http://oshiete.goo.ne.jp/qa/6764374.html
↑で質問させて頂いた者です。

前回は、回答者:keithin様のVBAを全くいじらずで解決したのですが・・・
今回も上記の質問と全く同じなのですが、座標値・座標原点の条件が変わり
どうしたらよいか途方に暮れています。

(100,-600)~(200,-400)までの2.5mピッチのxyz座標データ(スペース区切りtxt)をSheetに読み込み。
A列=x
B列=y
C列=z

そしてD列・100行のセルを座標原点(100,-600)として、セルにz値を展開したいのです。
横軸=x
縦軸=y

以上のことをExcel VBAでやりたいのですが・・・
可能でしょうか?
宜しくお願いします。

A 回答 (2件)

行と列を読み違えてましたね。




>セルを座標原点(100,-600)として

書き直し:
原点座標からの移動量
Δ=(X座標-100,Y座標+600)
をピッチで割り算すれば,原点セルからのセルの移動量が出ます。ここまではサスガに判りますよね?


X座標はA列にあって列方向(横向け)に配置,Y座標はB列にあって行方向(下向け)に(正負が逆向きで)配置ですから
range("D100").offset(-(cells(i, "B)+600)/2.5, (cells(i, "A")-100)/2.5) = cells(i, "C")

でした。
失礼しました。




#今日はなんだかどれも一度で解決しないのばっかりでした。。。
    • good
    • 0
この回答へのお礼

解決しました。

有難うございます。

お礼日時:2011/12/29 06:11

丸投げで勉強する気がない,というよりはエクセル以前に何を計算したらアナタの仕事ができるのか,説明しなかったせいですかね。

でもそれは,パソコン(エクセル)のアドバイスじゃないです。


こう考えますよ:
原点座標からの移動量
Δ=(X座標-100,Y座標+600)
をピッチで割り算すれば,原点セルからのセルの移動量が出ます。

セルの座標系は基準セルに対して右がプラス,上がマイナスなので


変更前:
range("AD26").offset(-cells(i, "B") / 2, cells(i, "A") / 2) = cells(i, "C")

変更後:
range("D100").offset(-(cells(i, "B)-100)/2.5, (cells(i, "A")+600)/2.5) = cells(i, "C")

といった具合の計算になります。

この回答への補足

keithinさま、回答有難うございます。
keithinさまのVBAを解読しながら四苦八苦しております。

●展開する座標範囲=(176,-634)~(266,474)
●展開する座標値の合計数=2,045個
●展開する座標リスト
AN列=x
AO列=y
AP列=z

●原点座標セル=B列・69行
●原点座標=(176,-634)
●ピッチ=2.5m

↑の条件の場合のVBAは・・・

Sub ()
Dim i
On Error Resume Next
For i = 1 To 2405
If Cells(i, "AO") <> "" Then
Range("B69").Offset(-(Cells(i, "AO") - 634) / 2.5, (Cells(i, "AN") + 176) / 2.5) = Cells(i, "AP")
End If
Next i
MsgBox ("終了")
End Sub

と、なるのでしょうか?
上記のVBAでは、Z値が展開されず・・・
途方に暮れてます。
再度、ご教授のほど宜しくお願いします。

補足日時:2011/12/29 00:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!