- 締切済み
エクセル2016 数式のコピーについて
エクセル2016を使用しています。 sheet1 において下記のように行ごとに合計しました。 B2~E2 =合計F2 B3~E3=合計F3 B4~E4=合計F4 sheet2において B2=sheet1 合計F2 C2=sheet1 合計F3 D2=sheet1 合計F4 とする必要があります。 sheet1の合計をF2に貼り付け、あとは数式をコピーをしたいのですが どうやってもsheet2 C2=sheet1 合計f3 になりません。 $マークを使ってもできません。 ご教授どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。 参考にしてください。この質問の問題を離れて、 Sheet1で「縦方向のセルに、1列にデータがある」とする。 別シートSheet2で、開始セル(点)から、式を(Sheet2で)横方向に複写して、Sheet1のデータを縦のデータを、横方向に持ってくる式、を考えたもの。 これには、OFFSET関数が適している。VBAでいう、Cell(x、Y)的な考えから来る。 行番号、列番号逆転のためには。 Sheet1のデータは、関数式で出したデータでも、入力したデータでも同じ。 例データ Sheet1のF2:F6 10 14 18 22 14 Sheet2の B6に =OFFSET(Sheet1!$F$2,COLUMN(B6)-2,0,1,1) と入れて、右方向に式を複写する。 結果 Sheet2の B6:G6に 第6行目のB:G列に 10 14 18 22 14 COLUMN(B6)-2の部分は、横方向の式複写で 0,1,2,3,4と変化する、ことに注目のこと。Sheet1から、取ってくるデータは、列的にF列からの隔たりは0である(同列)。 参考。 VBAではf2、F3、F4は Sub test01() MsgBox Worksheets("Sheet1").Range("F2").Cells(1, 1) MsgBox Worksheets("Sheet1").Range("F2").Cells(2, 1) MsgBox Worksheets("Sheet1").Range("F2").Cells(3, 1) End Sub となるが、 OFFSET関数では F2,0.0 VBAのCellsではRange("F2").Cells(1, 1) 、F2,1,1 と変わる。
- imogasi
- ベストアンサー率27% (4737/17069)
「コピー」操作、の貼り付けにおいて、「型式を選択してはりつけ」の「行と行入れ替える」にあたることをしたいようだ、ね。 Sheet1の関数式のあるF2:F4を、値化して、上記の操作をやれば同じことは出来る。 ・値化の手間と、Sheet1のデータの変動に連動しなくなる、から好まないのだろう。 ーー 結局、Sheet2では、新しい式を入れることになる。でも、Sheet1より難しくなると言えよう。 Sheet2のB2に =INDEX(Sheet1!$F$2:Sheet1!$F$4,COLUMN(B2)-1,1) で結果 10 式を横方向に複写して、 C2は 14,D2は 18 === Sheet2のB2で=SUM(Sheet1!B2:E2)と打ち直した方が簡単では。式複写もあきらめる。 Sheet1で第2-5行の、4行の合計の場合に変えると、 =INDEX(Sheet1!$F$2:Sheet1!$F$5,COLUMN(B2)-1,1) のように変えないといけないので、完全ではないかも。 関数ではデータ列数の割り出しも、式的に難しいと思う。
お礼
ご丁寧に2回もご回答どうもありがとうございます!
- msMike
- ベストアンサー率20% (364/1805)
お礼
ご丁寧な説明をどうもありがとうございます。 理解できるまで数か月要すると思いますが。。挑戦します。