Excel VBAで座標読み込み・配置方法

このQ&Aのポイント
  • Excel VBAを使用して、指定された範囲の座標データを読み込み、セルに展開する方法を解説します。
  • 座標データは2.5mピッチのxyz座標であり、スペース区切りのテキストファイルから読み込みます。
  • 読み込んだデータは、A列にx座標、B列にy座標、C列にz座標として配置され、D列にはz値が展開されます。
回答を見る
  • ベストアンサー

Excel VBAにて座標読み込み・配置

http://okwave.jp/qa/q6764374.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でやりたいのですが・・・ 可能でしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.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") でした。 失礼しました。 #今日はなんだかどれも一度で解決しないのばっかりでした。。。

zibun1971
質問者

お礼

解決しました。 有難うございます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

丸投げで勉強する気がない,というよりはエクセル以前に何を計算したらアナタの仕事ができるのか,説明しなかったせいですかね。でもそれは,パソコン(エクセル)のアドバイスじゃないです。 こう考えますよ: 原点座標からの移動量 Δ=(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") といった具合の計算になります。

zibun1971
質問者

補足

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値が展開されず・・・ 途方に暮れてます。 再度、ご教授のほど宜しくお願いします。

関連するQ&A

  • Excel VBAにて座標読み込み・配置

    当方、Excel VBAに関しては全くのド素人でございます。 お客さんに頼まれて、次のことをやりたいのですが、どうしたらよいか途方に暮れています。 (-50,-50)~(50,50)までの2mピッチの合計2601個のxyz座標データ(txt)をSheetに読み込み。 A列=x B列=y C列=z そしてAD列・26行のセルを座標(0,0)として、セルにz値を展開したいのです。 横軸=x 縦軸=y BC列・1行が(50,50) E列・51行が(-50,-50) 以上のことをExcel VBAでやりたいのですが・・・ 可能でしょうか? 宜しくお願いします。

  • 座標

    xy平面、xyz空間で座標を書くとき (x、y)、(x、y、z)と普通は書きます。 これを縦で書いてはいけないでしょうか?(2行1列、3行1列の行列のように) 「一般に横で書かれているのだから横に書きなさい」 とおっしゃられるかたもいると思うのですが、 座標を使って内積を作るときなど、やりやすいのです。

  • 座標変換について

    座標系XYZの空間に点A(X1,Y1,Z1)、点B(X2,Y2,Z2)、点C(X3,Y3,Z3)があります。 この3点を通る円の中心をP(X0,Y0,Z0)とし、 円の存在する平面をx'y'平面とします。 さらに原点を点P、x'軸はPAを通る直線とします。 座標系x'y'z'から円周上の点D(X',Y',Z')を求め 座標系XYZに変換した(X4,Y4,Z4)を求めたいのですが、どうすればよいのでしょうか? 以下のようにすれば求まると思うのですが角度α、β、γの求め方が分かりません。 X'' = X' * cosα - Y' * sinα Y'' = X' * sinα + Y' * cosα Z'' = Z' X''' = X'' Y''' = Y'' * cosβ - Z'' * sinβ Z''' = Y'' * sinβ + Z'' * cosβ X4 = X''' * cosγ + Z''' * sinγ Y4 = Y''' Z4 = Z''' * cosγ - X''' * sinγ よろしくお願いします。

  • excel97で等高線図

    お世話になります。 excel97で等高線図を書きたいと考えています。 データは(X座標,Y座標,Z座標)で与えられています。 グラフの横軸をx座標、縦軸をy座標として、z座標を等高線で示したいのですが、可能でしょうか。 不明な点は補足要求願います。

  • 二重剛体棒の直交座標による運動方程式のたてかた

    x、y平面(縦軸x、横軸y)で原点Оに固定してある剛体棒(m1)とその剛体棒にピンで連結しているm2があり、m1と縦軸のなす角がθ1,m2と縦軸のなす角がθ2とします。m1の重心位置の座標をx1,y1とし、m2の重心座標をx2,y2とします。この場合の運動方程式を直交座標で表わしたいのですがどうしたいいか教えてください。回転運動を直交座標で表わすのはナンセンスだとは思いますがお願いします。

  • ある平面に対する座標変換

    空間上に(x,y,z)の点があるとします。 この点を、ある平面 ax + by+ cz + d = 0 から見た時の値(x',y',z')に変換したいのですが、どうやったらいいかわかりません。 座標系が、xyz-座標から新しい座標系、x'y'z'-座標に変わるのですが、どうやれば、いいかわかりません。回転させるだけなら、それほど、難しくないと思うのですが、それだけじゃないので、わからないです。 よろしくお願いいたします。

  • Excel VBA での計算について…

    こんばんは、最近VBAを使い始めた初心者のものです。 画像処理をやってます。Bitmap形式の画像からRGB値を読み込んでそれぞれのワークシートに値を入れる所までは出来てます。 そのあと、RGB→XYZ→L*a*b*に変換した値を新しいワークシートの対応するセルにいれたいのですが、なにぶん初心者なのでどう書くのかわからず困ってます。 どなたか教えていただけないでしょうか? ちなみにRGB→XYZの変換式は X=0.607R+0.174G+0.201B Y=0.299R+0.587G+0.114B Z=0.066G+1.117B で、XYZ→L*a*b*の変換式は (X/0.983)>0.008856,(Y/1.000)>0.008856,(Z/1.183)>0.008856の時 L*=116(Y/1.000)^1/3 a*=500{(X/0.983)^1/3-(Y/1.000)^1/3} b*=200{(Y/1.000)^1/3-(Z/1.183)^1/3} (X/0.983),(Y/1.000),(Z/1.183)の値に0.008856以下のものがある場合は、 上式で対応する立法根の項をそれぞれ以下の式に置き換えて計算します。 (X/0.983)^1/3→7.787(X/0.983)+16/116 (Y/1.000)^1/3→7.787(Y/1.000)+16/116 (Z/1.183)^1/3→7.787(Z/1.183)+16/116

  • 機械座標について

    いつもお世話になります。 朝、機械を立ち上げる際、原点が狂うのは知ってますので、原点復帰はします。それから加工という流れにはなるかと思います。ある日、帰る際、自分は、G90 G53 X100.Y100.Z100.で原点復帰しやすいように帰りますが、通常、機械座標はXYZ全ての軸が100にならないといけませんよね?それが、X100.520 Y100.483 Z100.05とか狂ってました。それって機械的に問題?それとも自分の知識が問題でしょうか? よろしくお願いします。

  • 極座標変換

    教えて下さい。 ある円形の外周を測定したとき(円形の物体を回して測定する。測定器は固定されている。)、横軸を位相、縦軸を測定値とすると、θ(0~n),r(0~n)のデータを極座標変換すると、x(0~n),y(0~n)のデータに置き換わると思います。これを横軸x縦軸yでグラフ化すると円になると思います。ここまでは合ってます? 円形の物体が真円であると仮定すると、横軸位相に対して縦軸測定値は、傾き0の直線になると思います。 しかし、円形の物体を回したときに回転中心と円形の物体の中心がずれていると、偏心して回転するため、直線にならなくて、曲線になると思います。(正弦波に近い曲線)この得られた曲線から極座標変換して、xy平面上に円を描きたいのですがどのようにすればいいのでしょうか?教えて下さい。

  • 3次元座標の求め方

    3次元座標の求め方 原点 0,0,0 を中心にした球体面上の正面から見た頂点座標で、 回転による移動後の座標の求め方を知りたいです。 例えば、球面の半径が 100 で、頂点の座標 x1, y1, z1 が 100, 0, 0 にある場合、 Y軸に対してπ/2 rad (90度)回転した座標 x2, y2, z2 は 0, 0, -100 になると思うのですが、 この新たな3つの座標 x2, y2, z2 を導くにはどのように計算しているのでしょうか。 平面上の円運動のように cos sin の組み合わせ等で導き出せるのでしょうか。 x1, y1, z1 から、 Y軸に対してr回転 した場合の各 x2, y2, z3 の出し方 X軸に対してθ回転 した場合の各 x3, y3, z3の出し方 Z軸に対してΘ回転 した場合の各 x4, y4, z4 の出し方 のような形で、導くための計算を順にお教えいただけると嬉しいです。 最終的には、元座標 x, y, z をY軸にr、更にそこからX軸にθ、更にそこからZ軸にΘで X, Y, Z になる、といった形で求められるようになりたいと思っています。 座標は原点 0, 0, 0を中心に 上に行くほどYが「減少」 右に行くほどXが「増加」 奥に行くほどZが「増加」 Y減少 ↑ _ Z増加 │/` ├─→ X増加 という形になっています 自分のわかる限りで質問内容を細かく記述したつもりですが、 数学の知識に乏しいので、記号などの使い方や説明の不備があるかもしれません。 何か不足があった場合には補足させて頂きます。 以上宜しくお願い致します。

専門家に質問してみよう