- ベストアンサー
Excel VBAで座標読み込み・配置方法
- Excel VBAを使用して、指定された範囲の座標データを読み込み、セルに展開する方法を解説します。
- 座標データは2.5mピッチのxyz座標であり、スペース区切りのテキストファイルから読み込みます。
- 読み込んだデータは、A列にx座標、B列にy座標、C列にz座標として配置され、D列にはz値が展開されます。
- みんなの回答 (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") でした。 失礼しました。 #今日はなんだかどれも一度で解決しないのばっかりでした。。。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
丸投げで勉強する気がない,というよりはエクセル以前に何を計算したらアナタの仕事ができるのか,説明しなかったせいですかね。でもそれは,パソコン(エクセル)のアドバイスじゃないです。 こう考えますよ: 原点座標からの移動量 Δ=(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値が展開されず・・・ 途方に暮れてます。 再度、ご教授のほど宜しくお願いします。
お礼
解決しました。 有難うございます。