- ベストアンサー
エクセルでくし刺し方向に、
エクセルは、列と行で平面に表を作ったりするほかに、 Sheetの方向にも軸があると考えると、 立体的な(3次元の)表として扱える気がするのですが、 Sheetの方向にフィルコピーしたり、 行方向の値をSheet方向に変換して張り付けたり、 例 Sheet1 A1 : 10 Sheet1 A2 : 100 Sheet1 A3 : 1000 : : : : ↓ Sheet2 B3 : 10 Sheet3 B3 : 100 Sheet4 B3 : 1000 : : : : 要するにSheet方向にデータを扱いたい場合 どうすればよいのでしょうか? (単に、くし刺し計算、ということではなく、 おねがいします。)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >Sheetの方向にも軸があると考えると、立体的な(3次元の)表として扱える気がするのですが、 「串刺し」というのは、Microsoft の初期の表計算からありましたが、理屈として、例えば、3次元が2次元の続きにあると考えて、一休さんのトラ退治のように、そのトラを平面から出せるかというと、「ノー」ですね。 私の考えからすると、表計算の3次元というのは、おそらく、メモリ空間に移動して出来るものだと思うのです。今度は、CTスキャナーのように、平面の細かいつながりが立体を作るように、そこには、時間が働いていると考えています。 串刺し自体のコンセプトは、VBAでは置き換えがありません。基本的な、VBAコードは、ある意味、データを線的にしか扱いません。もしも、3次元の軸が静的に存在していたら、それを利用できるはずなのです。それが出来ないのです。Excelアプリケーションで、計算のメモリ空間を擬似的に作り出して、そこで表に現しているのだと思っています。 No. 1858662 で、マクロをお作りになっているようですが、 私なら、あえて、その串刺し機能を利用しますね。 '------------------------------------------ '<標準モジュール> Function MyValues(myRng As Range) As Variant Dim m As Integer Dim i As Integer m = Application.Caller.Parent.Index i = myRng.Parent.Index With myRng If m - i = 0 Or m - i > .Count Then MyValues = 0: Exit Function MyValues = .Cells(m - i, 1).Value End With End Function '------------------------------------------ Sheet2 から Sheet 4 をマルチセレクト(作業グループ)にしますね。Sheet2のB2 に、 =MyValues(Sheet1!A1:A3) と入れたら、それで出来ているはずですね。 元のシートから離れた距離に足して、検索して出します。 もちろん、これを利用したマクロも可能です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
後半の例に関して言えば、数時間前の http://okwave.jp/kotaeru.php3?qid=1858662 の質問と同じではないですか。そちらの方も参考にされては。 前半は具体的な問題に当たって、個別に質問をしてください。
お礼
回答ありがとうございます。 ネタバレですね。ご指摘の質問を見ていて、いろいろな”シート方向にデータを扱う関数”のようなものがあるのでは?と思い質問しました。
- 0KG00
- ベストアンサー率36% (334/913)
作業グループでまとめてしまえば同じ値を入れることはできますが、そうでない場合はマクロを使わない限りはむりかと。元々、3D参照を扱える関数自体が限られていますし、すべての機能で扱えないのは仕方がないのでは。
お礼
回答ありがとうございます。 ただ、いくつもの同形式のシートに渡るデータを作成してシート方向にデータを扱う必要が起こった場合、どうすればいいのかなとおもったのです。 参考にさせていただきます。
お礼
回答ありがとうございます。 エクセルはVBAも含めて時間軸上に一本の線の上で計算しているという考え方でいいのでしょうか。 いろいろ疑問がわいてきますがまた別の質問として投稿させていただきます。