• ベストアンサー

座標と座標値を表にする その2

何度も申し訳ないのですが、教えて下さい。 今、表1の様なxyzの座標があります。 これを表5の様に変換したいと考えております。 表1を直接表5に、もしくは表1を表3に変換することはできるのでしょうか? (表3に変換したら後は力技で被りを消去かなぁと思っております) ちなみに、 先程、皆様のお力で、表1を表2に変換することは出来ました。 大変申し訳ございませんが、再びお力を貸して下さい。 よろしくお願いいたします。

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

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

>x座標y座標共に6桁程の数字で、  : >それぞれのデータは751データ程あります。 こういった具体的な目に見える情報があれば、皆さん二度手間も無くもっとすっきり進んだと思いますよ。 ただX/Yについてダブりデータが無いという事なら、もっと簡単な数式(これなら間違いようが無いと思います)で F2は =SUMIFS($C:$C,$A:$A,F$1,$B:$B,$E2) と記入、右に左にコピーします。 >z座標は、0.503678のように有効数字6桁程度の小さい数字です。  : >zは無表示となります。 再掲: >必要ならたとえばセルの書式設定の表示形式のユーザー定義で… 実際のデータがそういう状況なら余計なお世話だったので、セルの書式を標準に戻して下さい。 >それ以外は表示されるのですが… 他の3や8は出てくるのにH4の6だけ出ないということなら、数式は正常で「あなたのサンプルが間違ってる」または「やり方を間違えてる」と考えるのが妥当です。 もう一回落ち着いて、「回答の手順をよく読みながら」最初からやり直してみてはいかがですか。他の方からのアドバイスと、ごっちゃにしないようによく気を付けて作業してください。

kamehiko0721
質問者

お礼

keithin様 ご回答ありがとうございます。 ご教示頂いた方法を試したところ、 解が得られました。 丁寧に教えて頂き、ありがとうございます。 >こういった具体的な目に見える情報があれば、皆さん二度手間も無くもっとすっきり進んだと思いますよ。 本当に申し訳ございません。 例に示したもので十分かと思っておりました。 私のエクセルへの知識や情報伝達手段が拙かったため、皆様にご迷惑をお掛けいたしました。 >もう一回落ち着いて、「回答の手順をよく読みながら」最初からやり直してみてはいかがですか。他の方からのアドバイスと、ごっちゃにしないようによく気を付けて作業してください。 ありがとうございます。 時間が迫っていたのであわてておりました。 私があわてていたため、皆様にお手数をお掛けしてしまったこと、 また、丁寧に教えて頂いたのに失礼な言い方をしてしまったことをお詫びいたします。 もっと落ち着いて、具体的に伝えられるよう気をつけます。 ご回答頂いた他の皆様にも、この場を借りましてお礼とお詫びを申し上げます。 将来、皆様の様に他の人にアドバイスできるよう努力致します。 この度は本当にありがとうございました。

その他の回答 (5)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.6

>私のエクセルがひどいのか、H4セルに6と表示されません。 xの値とyの値を再確認してください。 私の添付画像でH4セルは6になっていますがH1が15でE4が14ですからA5=15、B5=14、C5=6なので目的通りです。 >xの値が等しいと共にyの値も等しいデータが複数存在していて、尚且つzの値が異なっているデータが存在していないことが先程分かりました。 重複データは無視されますので気にしなくて良いでしょう。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>表1を直接表5に、 配列演算で対応できます。 x軸の値をF1~H1へ小さい順に転記するには次の式を使います。 =IFERROR(SMALL($A2:$A5,COUNTIF($A2:$A5,"<="&E1)+1),"") y軸の値をE2~E4へ小さい順に転記するには次の式を使います。 =IFERROR(SMALL($B2:$B5,COUNTIF($B2:$B5,"<="&E1)+1),"") F2に次の式を入力して結果を配列とするためCtrl+Shift+Enterで確定します。 F2を右へH2までコピーし、F2~H2を選択した状態で下へ4行までコピーします。 基本的に回答No.2と同じですが、関数式を理解し易くしてあります。 =IF(MAX(($A$2:$A$5=F$1)*($B$2:$B$5=$E2)*($C$2:$C$5)),MAX(($A$2:$A$5=F$1)*($B$2:$B$5=$E2)*($C$2:$C$5)),"") 結果は添付画像のようになります。

kamehiko0721
質問者

お礼

bunjii様 ご回答ありがとうございます。 解決法をご提示頂いたのに申し訳ないのですが、 私のエクセルがひどいのか、H4セルに6と表示されません。 それ以外は表示されるのですが… また、 実際の数字は、x座標y座標共に6桁程の数字で、 z座標は、0.503678のように有効数字6桁程度の小さい数字です。 また、それぞれのデータは751データ程あります。 そのせいか分かりませんが、実際のデータでやってみるとxとyは表示されるのですが、 zは無表示となります。 なお、 データについて補足がございます。 xの値が等しいと共にyの値も等しいデータが複数存在していて、尚且つzの値が異なっているデータが存在していないことが先程分かりました。 (回答No1の補足が間違っておりました。すみません) もしお時間がございましたら、 引き続き、お力を貸して頂けると助かります。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、表1において「x」と入力されているセルがSheet1のA1セルであり、Sheet2のA列~B列を作業列として使用して、Sheet3及びSheet4に、表5の様な変換後の表を表示させるものとします。  尚、Sheet3の表は「xの値が等しいと共にyの値も等しいデータが複数存在している場合には、その中でzの値が最も大きいものの値を表示する」表とし、 Sheet4の表は「xの値が等しいと共にyの値も等しいデータが複数存在している場合には、その中でzの値が最も小さいものの値を表示する」表とします。  まず、Sheet2のA1セルに次の関数を入力して下さい。 =IF(COUNT(Sheet1!$C:$C),REPLACE(REPT(0,15),ROUNDUP(LOG10(MAX(ABS(MAX(Sheet1!$C:$C)),ABS(MIN(Sheet1!$C:$C)))),0),1,"0."),"")  次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF(AND($A$1<>"",COUNT(INDEX(Sheet1!$A:$A,ROW()):INDEX(Sheet1!$C:$C,ROW()))=3),IF(COUNTIF(A$1:A1,INDEX(Sheet1!$A:$A,ROW())&"◆"&INDEX(Sheet1!$B:$B,ROW())&"◆"&TEXT(INDEX(Sheet1!$C:$C,ROW()),"1"&$A$1&";0"&$A$1)),"",INDEX(Sheet1!$A:$A,ROW())&"◆"&INDEX(Sheet1!$B:$B,ROW())&"◆"&TEXT(INDEX(Sheet1!$C:$C,ROW()),"1"&$A$1&";0"&$A$1)),"")  次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF(COUNTIF($A2,"*?◆*?◆*?"),COUNTIF($A:$A,">"&$A2),"")  次に、Sheet2のA2~B2の範囲をコピーして、同じ列範囲の3行目以下に貼り付けて下さい。  次に、Sheet3とSheet4のB1セルに次の関数を入力して下さい。 =IF(OR(ISNUMBER(A1),COLUMNS($B:B)=1),IF(COUNTIF(Sheet1!$A:$A,">"&IF(COLUMNS($B:B)=1,-9E+307,A1)),LARGE(Sheet1!$A:$A,COUNTIF(Sheet1!$A:$A,">"&IF(COLUMNS($B:B)=1,-9E+307,A1))),""),"")  次に、Sheet3とSheet4の各々のシートにおいて、B1セルをコピーして、同じ表内の1行目においてB1セルよりも右側にある全てのセルに貼り付けて下さい。  次に、Sheet3とSheet4のA2セルに次の関数を入力して下さい。 =IF(OR(ISNUMBER(A1),ROWS($2:2)=1),IF(COUNTIF(Sheet1!$B:$B,">"&IF(ROWS($2:2)=1,-9E+307,A1)),LARGE(Sheet1!$B:$B,COUNTIF(Sheet1!$B:$B,">"&IF(ROWS($2:2)=1,-9E+307,A1))),""),"")  次に、Sheet3とSheet4の各々のシートにおいて、A2セルをコピーして、A3以下に貼り付けて下さい。  次に、Sheet3のB2セルに次の関数を入力して下さい。 =IF(OR($B$1="",$A2=""),"",IF(COUNTIF(Sheet2!$A:$A,B$1&"◆"&$A2&"◆*"),INDEX(Sheet1!$C:$C,MATCH(COUNTIF(Sheet2!$A:$A,">"&B$1&"◆"&$A2&"◆9"),Sheet2!$B:$B,0)),""))  次に、Sheet3のB2セルをコピーして、同じ表内において、zの値を表示する可能性のある全てのセルに貼り付けて下さい。  次に、Sheet4のB2セルに次の関数を入力して下さい。 =IF(OR($B$1="",$A2=""),"",IF(COUNTIF(Sheet2!$A:$A,B$1&"◆"&$A2&"◆*"),INDEX(Sheet1!$C:$C,MATCH(COUNTIF(Sheet2!$A:$A,">"&B$1&"◆"&$A2&"◆")-1,Sheet2!$B:$B,0)),""))  次に、Sheet4のB2セルをコピーして、同じ表内において、zの値を表示する可能性のある全てのセルに貼り付けて下さい。  これで、表5の様な変換後の表がSheet3とSheet4に表示されます。  尚、 >(3)異なるzが存在した場合、その行列を残す。 との事ですが、それは一体どの様な残し方にすれば宜しいのでしょうか?  例えば、表1において、xの値が15でyの値が12となっていて、尚且つzの値が異なっている行が複数存在していた場合、表5の1行目(xの値欄)には15が複数列に表示され、1列目(yの値欄)には15が複数行に表示される事になりますが、 その際、表1においてxの値が15で、yの値が例えば14、zの値が例えば6となっている行が1行だけ存在していた場合には、 表5において、yの値が14となってる行においては、xの値が15となっている全ての列において6と表示しなければならないのでしょうか?

kamehiko0721
質問者

お礼

kagakusuki様 ご回答ありがとうございます。 例題の形では上手くいきました。 解決法をご提示頂いたのに申し訳ないのですが、 実際の数字は、x座標y座標共に467057のような6桁程の数字で、 z座標は、0.503678のように有効数字6桁程度の小さい数字です。 (大きくても16程度です。ちなみに負の値はありません) また、 それぞれのデータは751データ程あります。 そのせいか分かりませんが、実際のデータでやってみるとxとyは表示されるのですが、 zは無表示となります。 なお、 データについて補足がございます。 xの値が等しいと共にyの値も等しいデータが複数存在していて、尚且つzの値が異なっているデータが存在していないことが先程分かりました。 (回答No1の補足が間違っておりました。丁寧に場合分けまでして下さったのに、申し訳ございません) もしお時間がございましたら、 引き続き、お力を貸して頂けると助かります。

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

添付図: A、B、C列にX,Y,Z E2に =IF(ROW(A1)>COUNT(0/FREQUENCY(B:B,B:B)),"",SMALL(B:B,COUNTIF(B:B,"<="&SUM(E1))+1)) 下向けにコピー F1に =IF(COLUMN(A1)>COUNT(0/FREQUENCY($A:$A,$A:$A)),"",SMALL($A:$A,COUNTIF($A:$A,"<="&SUM(E1))+1)) 右向けにコピー F2に =MAX(IF(($A$1:$A$100=F$1)*($B$1:$B$100=$E2),$C$1:$C$100)) と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力 表範囲にコピー 必要ならたとえばセルの書式設定の表示形式のユーザー定義で # と設定しておく。

kamehiko0721
質問者

お礼

keithin様 ありがとうございます。 解決法をご提示頂いたのに申し訳ないのですが、 私のエクセルがひどいのか、H4セルに6と表示されません。 それ以外は表示されるのですが… また、 実際の数字は、x座標y座標共に6桁程の数字で、 z座標は、0.503678のように有効数字6桁程度の小さい数字です。 また、それぞれのデータは751データ程あります。 そのせいか分かりませんが、実際のデータでやってみるとxとyは表示されるのですが、 zは無表示となります。 なお、 データについて補足がございます。 xの値が等しいと共にyの値も等しいデータが複数存在していて、尚且つzの値が異なっているデータが存在していないことが先程分かりました。 (回答No1の補足が間違っておりました。すみません) もしお時間がございましたら、 引き続き、お力を貸して頂けると助かります。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 確認したい事があります。  表1において、万が一、xの値が等しいと共にyの値も等しいデータが複数存在していて、尚且つzの値が異なっているデータが存在していた場合には、表5にはどのzの値を表示させる様にすれば良いのでしょうか?

kamehiko0721
質問者

補足

おはようございます。 kagakusukiさんのおっしゃる場合も考えられますね。 (1)大きい値を採用する。 (2)小さい値を採用する。 (3)異なるzが存在した場合、その行列を残す。 としたいと思います。 ちなみに(1)の優先順位が高いです。 ((2)と(3)は保険として持っておきたい考えです) 大変恐縮なのですが、(1)に加えて、 表(5)からxおよびyが昇順になっていて、且つzの値がxとyに対応していることが理想です。 (今のところ表(5)の状態からvlookupを使って、別シートにあらわす方法しか思いつきません) もし、良い案があればご助言頂けると光栄です。

関連するQ&A

  • 座標と座標値を表にする

    教えてください。 下に示すような値があって、 x ---y---z 11---4---6 15--12---8 12--14---3 15--14---6 ・ ・ ・ ・ これを、下の様な表形式?行列形式?にしたいと思っています。 --11--15--12・・・・・・・・・x -4-6-------- 12-----8---- 14-----6---3 ・ ・ ・ ・ y その後でさらに加工したいので、 出来ればエクセルだと助かります。 簡単な質問かもしれませんが、 お力を貸して下さい。 申し訳ございませんがよろしくお願いいたします。

  • GPS(緯度,経度)から,ローカル(局所平面)のXYZ座標を求めるには?

    GPSに関して,何度か質問をさせていただいております。 以前,GPS(緯度,経度)から,地心座標系(XYZ)への変換について教えていただきました。 その方法で地心座標系(XYZ)を計算することができたのですが,緯度,経度,平均海水面からの高さ(MSL)から,局所平面(ローカル)座標系(X,Y)を求める方法について悩んでおります。 例を申しますと,平坦地の100m(南北方向100m,東西方向100m)の矩形のラインをGPSで計測し,地心座標系で軌跡を求めると,南北方向の100mに対して,距離が70mの長方形の走行軌跡になってしまいます。 GPSで平面での走行距離や方向を求めたいと思っております。 緯度,経度情報からローカルの平面座標系(X,Y)(m単位)を求める方法をご存知でしたら,教えてください。よろしくお願いします。

  • 座標系の偏倍なんて嫌いだあ(T-T)

    はじめまして。kodemarimanと言います。 皆さんよろしくお願いします。 早速ですが、質問です。多分高校数学レベルの問題です。 右上の座標が(x1,y1)=(200,200)、左下の座標が(x2,y2)=(0,0)の正方形を考えます。 次の手順で座標を変換して、この正方形を描画すると、斜めになった長方形になります。 1:座標系を反時計周りに30度回転します。 2:座標系をx方向に1.2倍、y方向に1.5倍偏倍します。 3:正方形を書きます。 ですが、次の手順だと斜めになった長方形でなく、菱形になってしまいます。 1:座標系をx方向に1.2倍、y方向に1.5倍編倍します。 2:座標系を反時計周りに30度回転します。 3:正方形を書きます。 これって、なぜなんでなんでしょう? 目的としては、このような座標変換を繰り返し行っても (例えば座標を回転して偏倍して平行移動して座標を回転して偏倍して平行移動して 座標を回転して偏倍して平行移動して・・・) いつでも長方形(正方形)が描かれるような座標変換を行いたいのですが・・・ ちなみにテストに使ってるソフトはGhostScriptといいます。 これはポストスクリプトのプログラムを書くと画像にしてくれる 便利なソフトです。 ↓URL http://www.cs.wisc.edu/~ghost/index.htm

  • 流体力学 円筒座標系

    円管内の速度分布を考えるとき、せん断応力を計算して μ(1/r)∂{r(∂u/∂r)}/∂r という項が出てくると思います。 xyz座標系で計算してから∇^2=…の式を使って円筒座標系に変換すればこの項が出せるのですが、 初めから円筒座標系でr~r+Δrの円環を考えて…という方法で解くと上手く出せません。 円筒座標系で上の式を導く方法を教えてください。 宜しくお願いします。 ちなみに、下のが私のやっている計算です。 正しければ最終的には2πr dr Δz×μ(1/r)∂{r(∂u/∂r)}/∂rとなるはずなのですが… 間違っているところを指摘していただけると助かります。 ちなみにτ(r)というのはrにおけるτという意味です。 2πrΔzτ(r)-2π(r+Δr)Δzτ(r+Δr) =2πrΔzτ(r)-2πrΔzτ(r+Δr)  (Δr→0 のとき r>>Δr だから) =-2πrΔz(∂τ/∂r)dr (テイラー展開) =μ2πrΔz(∂^2 u/∂r^2)dr  (フーリエの法則)

  • ワールド座標系で回転

    こんにちは。3Dプログラムの仕事の指示を受けました。 3Dプログラムは無知でして見よう見まねで行っています。 現在回転行列について困っています。 正方形のモデルをY軸に45度、X軸に45度回転させようとしています。 現在はモデルのローカル座標系で回転するのでY軸の回転でローカル座標系が変わった後にX軸で回転します。これを相対変換と言えばよろしいのでしょうか。 WorldMatrix = RotationX(AngleX) ; WorldMatrix *= RotationY(AngleY) ; WorldMatrix *= RotationZ(AngleZ) ; 上記の回転ではなく、ワールド座標系で回転させたいのですが、このときの回転行列はどのようにして求めればよろしいのでしょうか? Y軸に45度回転させても座標系はそのまま。そしてX軸で45度させるためにはどのようにすればよろしいのでしょうか? わかりづらいですが添付した図のようになればと思っています。

  • 極座標への変換

    こんばんは。テストを控え、わからなくてあせっています。 どうか力になってください。 今、球面x^2+y^2+z^2=a^2のxy平面の上部にある半球面の面積分をしています。 途中で極座標に変換して計算する・・というところがでてきたのですが、どのように変換したら答えになるのかわからずに困っています。 文章では分りにくいのですが、式は ∫[-a→a]∫[-√(a^2-x^2)→√(a^2-x^2)][{3(x^2+y^2)-2a^2}/√(a^2-x^2-y^2)]dydxというものです。 これがなぜ ∫[0→2π]∫[0→a]{(3r^3-2a^2)/√(a^2-r^2)}rdrdθになるのでしょうか。 基本的な質問かもしれませんが詳しく解説していただけると助かります。 補足が必要なら書き足すので、よろしくお願いします。

  • 集計表にする!!

    誠に勝手ながら申し訳ございません。 仕事上少々急いでいます。 複雑な表の内容を 集計し一覧表にできないでしょうか?? 詳細は添付ファイルを見ていただけると ご理解いただけると存じます。 皆様も忙しいとは思いますが 力を貸していただけると嬉しい限りです。

  • 集計表にする!!2

    集計表にする!! 画像を見やすくしたつもりです・・・ 誠に勝手ながら申し訳ございません。 仕事上少々急いでいます。 複雑な表の内容を 集計し一覧表にできないでしょうか?? 詳細は添付ファイルを見ていただけると ご理解いただけると存じます。 皆様も忙しいとは思いますが 力を貸していただけると嬉しい限りです。

  • 三次元座標変換について質問

    みなさんこんにちは。 G68の機能を用いて三次元座標変換をしようと考えています。 以下のような指令を用いてテストを行ってみました。 例?)G68X0.Y0.Z0.I1.J0.K0.R30. 例?)G68X0.Y0.Z0.I0.J1.K0.R30. ところが、例?、?のように回転中心座標軸I、Jで指令しても 常にZ軸が回転中心となって座標変換されてしまいます。 このような現象が起こってしまう原因としてどのような要因が考えられますでしょうか。 お手数ですが教えていただけると幸いです。 ちなみに制御装置はFANUC 15iMAです。 宜しくお願い致します。

  • 極座標の計算があいません

    似たような質問を度々させて頂いて申し訳ないのですが、 添付の問題の答えが合いません。 極座標のベクトルを複素数に置き直して計算しているのですが、 U1の結果があいません。なので、U2まで計算していません。 私の計算は (3.5,107deg)→-1.02+3.35i と換算し、 最終的に U1=120-118i → (168.6g, 315deg) となりました。 ちなみに g(グラム)はこの問題での単位なので 気にしないでください。 私の換算方法が間違えているのでしょうか? そうでなければその後の計算が間違えていると思うので、 どちらが間違えているのか確認したいです。 よろしくお願いいたします。

専門家に質問してみよう