- ベストアンサー
Excel 行列入れ替えて数式をコピーしたい
Excelのすばらしい機能に相対参照を使った連続コピーがあります。例えば、=A1 を横方向にコピーすると =B1 =C1 ・・となり、縦方向だと=A2 =A3 ・・となります。 ところで、これを横方向にコピーしたとき =A2 =A3 ・・、縦方向に=B1 =C1 ・・になる方法ってないでしょうか? 「形式を選択して貼付け」の[行列を入れ替える]では『値』では有効なのですが『数式』だとうまくいきません。数式で行列入替する方法を教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
No.2で答えた者ですが,もっと簡単な方法がありました。 セルの表示形式はデフォルトの「標準」ままでかまいません。 まず,「=A1」と入力するセルに「あ=A1」と入力し,それを縦方向に連続コピーします。 「あ=A1」,「あ=A2」,… となるはずです。 これを「形式を選択して貼付け」の[行列を入れ替える]で単純にそのまま貼り付け,貼り付けた先のせるを選択し, 「あ」を「」(←文字無記入)に置換してやるとできます。 最初したとき, 『セル内には「=A1」,「=A2」… になっているのに,なんで表示が「あ=A1」,「あ=A2」,… なんだろう???』 とあせってしまいましたが,何の事はない,最初に書いた「あ=A1」,「あ=A2」,… というセルが「=A1」,「=A2」… によって参照されてるだけでした。
その他の回答 (2)
いつも我流でExcelと格闘してるため,ちゃんとした方法かどうかわかりませんが,できるので一応。 まず,=A1と書き込むセルの書式設定を「文字列」にし,=A1と書き込みます。 この時点で,セルには=A1と表示されていると思います。 これを縦方向に連続コピーし,できた列を「形式を選択して貼付け」の[行列を入れ替える]で単純に貼り付けたあと,そのセルの表示形式を「標準」にします。 これで,表示が計算結果の値ではなく=A1,=A2,… のままであれば,そのセル1つ1つをダブルクリックして,リターンすると数式として扱われるようになります。 でも,セルが多くて手間な場合は そのセル全体を選択し下のマクロを実行させます。 Sub Enter_Values() For Each xCell In Selection xCell.Value = xCell.Value Next xCell End Sub このマクロは単純なもので,今まで自作してやってましたが,ココ↓にも出てました。 http://support.microsoft.com/default.aspx?scid=kb;ja;291047
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
勘違いしているかも知れませんが、 例えば、 A1:C3にデータがあるとき D1に =OFFSET($A$1,COLUMNS($D$1:D1)-1,ROWS($D$1:D1)-1) と入れると、 横にコピーすると、縦のデータが 縦にコピーすると、横のデータが参照できます transpose関数を使うこともできます。 同じ条件の時 =TRANSPOSE(A1:C3) をD1:F3の範囲でSHIFT+CTRL+ENTERで配列式として入力します。
お礼
ご教示ありがとうございました。OFFSET関数を使った方法で試してみたらうまくいきました。ただ、意味的にはまだピンときていませんので、もう少し勉強します。TRANSPOSE関数のもは、手持ちの解説書にこの関数が載っていないこともあり、#VALUE!にしかなりません。SHIFT+CTRL+ENTER云々のことも解りません。もっと勉強します。ありがとうございました。
お礼
ありがとうございました。[置換]を使うことまでは思いつきませんでした。縦方向、横方向とも数式の行列入替コピーがすっきりとできました。ホントにいいアイデアでした。ありがとうございました。