• ベストアンサー

エクセルでくし刺し方向に、

エクセルは、列と行で平面に表を作ったりするほかに、 Sheetの方向にも軸があると考えると、 立体的な(3次元の)表として扱える気がするのですが、 Sheetの方向にフィルコピーしたり、 行方向の値をSheet方向に変換して張り付けたり、 例 Sheet1 A1 :  10 Sheet1 A2 : 100 Sheet1 A3 : 1000  :     :  :     :     ↓ Sheet2 B3 : 10 Sheet3 B3 : 100 Sheet4 B3 : 1000  :     :  :     : 要するにSheet方向にデータを扱いたい場合 どうすればよいのでしょうか? (単に、くし刺し計算、ということではなく、 おねがいします。)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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) と入れたら、それで出来ているはずですね。 元のシートから離れた距離に足して、検索して出します。 もちろん、これを利用したマクロも可能です。

haccyan
質問者

お礼

回答ありがとうございます。 エクセルはVBAも含めて時間軸上に一本の線の上で計算しているという考え方でいいのでしょうか。 いろいろ疑問がわいてきますがまた別の質問として投稿させていただきます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

後半の例に関して言えば、数時間前の http://okwave.jp/kotaeru.php3?qid=1858662 の質問と同じではないですか。そちらの方も参考にされては。 前半は具体的な問題に当たって、個別に質問をしてください。

haccyan
質問者

お礼

回答ありがとうございます。 ネタバレですね。ご指摘の質問を見ていて、いろいろな”シート方向にデータを扱う関数”のようなものがあるのでは?と思い質問しました。

  • 0KG00
  • ベストアンサー率36% (334/913)
回答No.1

作業グループでまとめてしまえば同じ値を入れることはできますが、そうでない場合はマクロを使わない限りはむりかと。元々、3D参照を扱える関数自体が限られていますし、すべての機能で扱えないのは仕方がないのでは。

haccyan
質問者

お礼

回答ありがとうございます。 ただ、いくつもの同形式のシートに渡るデータを作成してシート方向にデータを扱う必要が起こった場合、どうすればいいのかなとおもったのです。 参考にさせていただきます。

関連するQ&A

  • Excelのハイパーリンクについて

    下記の様なリンクを作りたいです。 2つのシートにそれぞれ表を用意しています。 シート1      A列   |  B列  |  C列  |・・・・ 1行|       |  5/20 |  5/21  |・・・・ 2行|  名前A  |  123  |      |・・・・ 3行|  名前B  |     |  234  |・・・・             :             :             : シート2に     A列   |  B列    |C列 1行|名前A   |  5/20    |123  ←ここの値は何でも良い(分かり易くするために123にしました) : : : と入っています。(実際はもっと沢山の情報があります) シート2のC列の値をハイパーリンクにして クリックされたら シート1のA列の値=シート2のA列の値 シート1の1行目の値=シート2のB列の値 で シート1のB2に飛びたいです。 この様な式を作りたいです。

  • エクセルの串刺し計算について

    串刺し計算について質問です。一つのシートに複数の表がある状態で串刺し計算を行う機会がありました。範囲指定した後にオートSUMボタンを押すと、指定した範囲と異なる範囲が選択される表がありました。そのまま作業を続行すると一つ一つのセルの値は正確に計算されていました。また、表の中には一行のみの表がありましたが、ここでは全く合計計算されず、仕方がないので電卓を使って値を出しました。予想外の事が二つ続いたので、どうも一つ一つのセルの値に自信が持てません。何か操作方法で分かっていないところがあるんでしょうか?ご教授願います。

  • エクセル関数を使って検索したいです。

    やりたいことは以下の通りです。 Sheet1~Sheet15が存在します。Sheet2~Sheet15には3列で行がそれぞれ異なる表があります。例えばSheet1は5行3列、Sheet2は10行3列、Sheet4は30行3列のように。ちなみにこれらの表は行が追加されていきます。 Sheet1にも同様に3列の表があるのですが、Sheet1のB列(2行目)に、式を作りたいです。 どんな式かと言うと、Sheet1のA列(1行目)に値を入れると、それと同じ値を、Sheet2~Sheet15のA列(1行目)と同じものを探し、そのSheetのB列(2行目)の値を返すというようにしたいです。 VLOOKUPを使うといいかと思うのですが、Sheetを14個もまたいで検索したい時にIFで作るとエクセル2003なので入れ子が7個以上になってしまいうまくいきません。 ちなみに、Sheet1に入力する値はAAA1やBBB2の様にアルファベットと数字の組み合わせです。 よって、例えばSheet2のA列にはAAA1、AAA2、AAA3、AAA4の様に、Sheet2のA列にはBBB1、BBB2、BBB3、BBB4の要に入力された状態になっています。 どなたかうまく切り抜ける方法を教えてください。

  • エクセルの串刺し機能で困っています

    大変困っています。 OSはwindows xpです。 エクセルで串刺し機能を使用したときに起こります。 例えば、sheetが3枚あるとします。 (1)串刺し機能でsheet1~sheet3まで全てを選択します。 (2)sheet1の A1に10 A2に5 を入力  B2に =A1*A2 の式を入力します。 (3)普通ならsheet2,3ともにB2には50と表示されるはずですが  実際にはR[-1]C[-1]*RC[-1]と表示されます。  sheet1は普通に50と表示されるのに。。 かなり意味がわからなくて困っています。 よろしくお願いします。

  • 【Excel】串刺し計算オートフィルの結果が不正

    Excelで、月毎に各店の売上の合計を出そうとしています。 例えば4月のブックで、A店・B店…E店の各店5つのシートと、全店の合計のシート、全部で6つのシートがあるとします。 そしてそれぞれのシートは、縦方向に日付、横方向に商品名が並ぶ表形式になっています。 ここで、各シートは行数・列数、そして配置が全く同じですので、合計のシートにその日その商品の全店の売上を、所謂串刺し計算で出すことができます。 例えばB2のセル…日付は1日、商品名はaで、 売上はA店、B店…の順に 500、600、700、800、900 となっています。 すると合計のシートのセルB2に、5店の売り上げを串刺し計算すると、 合計は3,500になると思います。 では、B3のセル、日付は2日で商品名は同じくaです。 売上は1,000、900、800、700、600です。 合計のシートのセルB3に串刺し計算すると、4,000円になる筈です。 また、C2のセル、日付は同じく1日で、商品名はbとします。 売上は300、500、700、900、1,000です。 合計のシートのセルC2に串刺し計算すると、3,400円になりますね。 でもここで、オートフィルという便利な機能があります。 合計のシートで、オートフィルを行うことによって、全店の各日・各商品毎の合計を一気に計算することができます。 串刺し計算した結果も、ちゃんと連続データで出てくる筈です。 それが…4月のブックでそれをやると、表示される計算結果が不正になるのです。 即ち、上記の例から、合計シートのセルB2から縦方向にオートフィルしても、横方向にオートフィルしても、全て3,500と表示されてしまうのです。 ただ、数式だけはちゃんとなっているのですが… 合計シートのセルB2には =SUM(A店:E店!B2) と数式が入っています。 では、B3には =SUM(A店:E店!B3) C2には =SUM(A店:E店!C2) と入っているんです。 なのに計算結果が不正になっている… 1ヶ所のセルに入っている数式をコピーして、他のセルにペーストしても、数式だけは正しいのに計算結果は正しくありません。 逆に、各セル1ヶ所1ヶ所串刺し計算すると、計算結果が正常に出てきます。 つまり数式をコピーすると不正扱いされるということです。 今、4月のブックでこの現象が起きています。 過去の月のブックでは、同じ操作を行って、計算結果は正常に出たのですが… 何故、今に限ってこうなるのでしょうか… Excel2010で、この現象が起きています。OSはWin7です。 また、問題のシートは全て、2003以前のバージョンで作るようなブック形式です。 何方か教えて頂けますでしょうか? 不足がありましたら補足します。

  • エクセルを使って,下記のようなことは可能でしょうか?

    エクセルを使って,下記のようなことは可能でしょうか? (1)ワークシート名「1」のA1セルにほしいデータの1つがある (2)同様に,ワークシート名「2」,「3」,「4」・・・のA1セルにもそれぞれほしいデータがある。 (3)いま、これらのデータを一つの表にまとめたい。その作業ワークシートを「作業」ワークシートとする。 (4)作業シートのA列の1行目にシート「1」の値を入れ,後はフィルによって2行目にシート「2」の値  3行目にシート「3」・・・の値が埋められるようにしたい。 上記に対応したいのですが、有用な関数などはありますでしょうか? 本来であれば,もともとフィルを行い易いデータ並びにしておくべきだったのでしょうけども・・ 他者が整理していたデータな上,量も多いため何とか簡略化できたらな,ということで知恵を拝借いただけないでしょうか?

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセルのシート間の串刺し?一覧表の作成で

    同じフォーマットのシートが複数枚あります(行事名、場所、日時・・などすべてシートのコピーにより作成)。それを新しいシートに一覧表として、A列には行事名、B列には場所、C列には日時・・という風に1シートに表示させたいのです。シートが増えていっても一覧表の行は下へ増えていく・・といったような表作成の方法を知りたいのです。 当サイトで調べてみたところ、似たような質問があり解決できる!と思いきや、その回答の中でもまた質問をしたくてモヤモヤしています・・・ その方の回答では 【【もし、私がやるとすると、シート名をSheet1,Sheet2,.と最後に数字をつけていく名前にします。 こうやると、串刺しを入力するシートで、どこかのセルにSheet1と入れて、そのセルをマウスでドラッグすれば以下sheet2,.という一列ができあがります。 これさえすれば、後はIndirect関数で該当のセルを参照すればOKです。 たとえば、A1~A10にシート名が入っていて、各シートの C1セルを参照する場合は、 INDIRECT("'" & A1 & "'" & "!$C$1") をB1に入れて、後はB2~B10にコピーすればいいわけです】】 だそうなのです(勝手に拝借してスミマセン)。すっごくわかりやすいのですが私にはこのINDIRECT関数の入れ方がわからないのです。 関数は探せましたがあとは1文字ずつ手入力(スペースも入れる?)すればよいのでしょうか? ("'" & A1 ??? またこの方の回答以外でも方法がありましたら教えてください(失礼ですが・・)。ほぼ初心者なのでVBAとかいう難しそうな方法は避けたいですし、アクセスではなくエクセルで作りたいのです。

  • excelで自動計算

    excelで九九の早見表のようなものを作りたいのですが・・・ ___A__B__C__D 1_____1__2__3 2__1__1__2__3 3__2__2__4__6 4__3__3__6__9 B2のセルには、A2*B1 C2のセルには、A2*C1 D2のセルには、A2*D1 B3のセルには、A3*B1 ・・・といった感じの表を作りたいのですが。 オートフィルを使って(又は自動で)さくっと簡単に作ることは可能でしょうか? B2=A2*$B$1 とやれば、縦方向にはオートフィルで1列だけうまくいくのですが、横方向にはうまくいってくれません。 2行目を全部手入力でやって、縦方向にオートフィルで出来そうなんですが、 100 X 100 以上の表を作りたいので途中でやる気がなくなります。 何かいい方法があれば、教えてください。 よろしくお願いいたします。

  • Excelの行方向での並べ替え

     行方向に順序がバラバラで入力されている日付データがあります(表1参照)。これを日付の若い順に1列ずつ行方向に並べ変えたいと思っています(表2参照)。  「データ」→「並べ替え」→「オプション」→「列単位」にすることで1行ずつ行方向の並べ替えができることは知っていますが、行数が多いため一括して並べ替えができないか考えております。  どなたかご教示いただければ幸いです。なお、Excel2007を使っています。      A          B        C 1  1996/11/07 1997/02/19 1996/11/21 2  1997/02/19 1997/02/19 3  1996/11/21 4  1997/02/19 1996/11/21 5  1997/02/19 1997/11/06 1997/02/19      ・      ・       (表1:並べ替え前)        ↓ (並べ替え)      A         B         C 1  1996/11/07 1996/11/21 1997/02/19 2  1997/02/19 1997/02/19 3  1996/11/21 4  1996/11/21 1997/02/19 5  1997/02/19 1997/02/19 1997/11/06      ・      ・      (表2:並べ替え後)

専門家に質問してみよう