人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数でお願いします。なるべくVBAは・・・<(_ _)>
=コピー元シート!●○の形式で絶対参照をするとき、●○の部分を簡単に変更していきたいのです。
添付画像の通りですが
(1)行列を入れ替えて値コピーをするとき、絶対参照を簡単に入力する方法が知りたい
(2)43行ごとに飛んでいる同列のデータを別のシートに整然と並べるための絶対参照の方法が知りたい。

エクセルのプロの方々!いかがでしょうか?

1173362517
●拡大する

●質問者: anglar
●カテゴリ:コンピュータ
✍キーワード:エクセル コピー データ プロ 入力
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● llusall
●0ポイント

数式の入力中にF4キーを押します。

絶対参照に変換されます。

このような回答でよかったでしょうか?

◎質問者からの返答

素早く回答していただきましたが解答ではありません。すみませんが、添付画像を見てもらえませんか?


2 ● りくっち
●30ポイント

1.TRANSPOSE配列関数という方法があります。

http://plaza.rakuten.co.jp/urawazakun/diary/200505300002/

例示の内容の場合だと、

まずAA1に

=TRANSPOSE(コピー元シート!$L$4:$N:$9)

と入力。

AA1を左肩にしてコピー先シートの転記範囲(行列入れ替え済みの範囲)を選択し、

F2キーを押します。

(これで数式が表示)

そのまま[Ctrl]+[Shift]+[Enter]で決定。

(配列数式のため)

範囲選択が間違っていなければ、ずばっと行列が入れ替えられた値が絶対参照ではり付きます。



2.リンク貼り付けを使います。

元データ範囲の全体(不要な行も全て)を選択してコピー。

コピー先シートに「形式を選択して貼り付け」の「リンク貼り付け」にチェックしてOKします。

これでデータは参照ではりつきます。

後は、コピー先シートの不要行を、フィルタなどで選択して行削除すれば、

参照が残ったままデータが並びます。



以上ご参考まで。

◎質問者からの返答

ありがとうございました。TRANSPOSE、初めて知りました。


3 ● nandedarou
●0ポイント

提示された図では、AA1:AF3がデータ表示領域ですが、私の考えた方法の都合上、データ表示領域を、AB2:AG4に変更して説明します。


(1)

コピー先シートでデータを表示したい領域の1つ上の行と一つ左の列に、次のように順に整数を入れます。

※ここがセルAA1(このセルは何も入れない)

|0|1|2|3|4|5|

0|

1|

2|


データを表示した領域の左上のセルに次の関数を書きます。

セルAB2に=OFFSET(コピー元シート!$L$4$,AB$1,$AA2)

セルAB2をAG2まで横にコピーして、

領域AB2:AG2を選択し、AB4:AG4まで下にコピーすれば出来上がりです。


(2)※(1)の応用です。

AA2に4と入れて、AA3に=AA2+47と書き、AA3を必要な分だけ下にコピーしてます。

セルAB2に=OFFSET(コピー元シート!$L$4$,$AA2,AB$1)

と書き(1)と同様にデータ領域すべてにコピーして出来上がりです。


※見せたくない列や行は、選択して右クリック→「表示しない」をクリックして下さい。

ダミー

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございました。参考にさせていただきます。


4 ● castiron
●50ポイント ベストアンサー

まず質問者さんがやりたいことは絶対参照じゃなくて相対参照ですよね?(画像がそうなっているから)

1個だけ記述して後はドラッグでコピーみたいなことをやりたいんですよね?

そういう前提で話を進めていきます。(コメントをオープンしていただけるとうれしかった)

ちなみに私はExcelを普通に使っているだけでプロでも何でもないのでスマートのスの字もありません。

(1)

=INDEX(Sheet1!$A$1:$C$4,COLUMN()-COLUMN($A$1)+1,ROW()-ROW($A$1)+1)

Sheet1!$A$1:$C$4:コピーしたい範囲(Sheet1!$A:$Cでも可)

COLUMN($A$1):コピー先の先頭のセル

これを使えば縦横を入れ替えたコピーが出来ます。

ただこれを見て分かるとおりこんなのやるくらいなら普通に行列を入れ替えてコピーをチェックした方が早いですね。

VBAをいやがっているようですがこういうことやるにはVBAの方が汎用性があり簡単な操作で実現できますよ。

多分自分でマクロを記録してちょっといじれば使えるようになると思います。

(2)

=INDEX(Sheet1!$L:$N,(ROW()-ROW($AA$1))*43+1,COLUMN()-COLUMN($AA$1)+1)

Sheet1!$L:$N;コピー元範囲

ROW($AA$1):コピー先先頭セル

これは関数使った方がいいかもしれませんね。

http://q.hatena.ne.jp/answer

◎質問者からの返答

ばっちりです。これがやりたかったのです。感謝。


5 ● nandedarou
●30ポイント

申し訳ありませんが、ケアレスミスがありましたので、再回答いたします。

※添付画像では、AA1:AF3がデータ表示領域ですが、私の考えた方法の都合上、データ表示領域をAB2:AG4に変更して説明します。


(1)

コピー先シートでデータを表示したい領域の1つ上の行(AB1:AG1)と一つ左の列(AA1:AA4)に、次のように0?5、0?2の整数を入れます。

 AA|AB|AC|AD|AE|AF|AG|
1| | 0| 1| 2| 3| 4| 5|
2| 0| | | | | | |
3| 1| | | | | | |
4| 2| | | | | | |

「AB2」に「=OFFSET(コピー元シート!$L$4,AB$1,$AA2)」と入力し、データ領域すべてにコピーします。(セルAB2をAG2まで横にコピーして、領域AB2:AG2を選択し、AB4:AG4まで下にコピーすれば出来上がりです。)


(2)※(1)の応用です。

「AA2」に「4」と入れて、「AA3」に「=AA2+43」と書き、AA3を必要な分だけ下にコピーします。

「AB2」に「=OFFSET(コピー元シート!$L$4,$AA2,AB$1)」と入力し、(1)と同様にデータ領域すべてにコピーして出来上がりです。


※見せたくない列や行は、選択して右クリック→「表示しない」をクリックして下さい。

http://q.hatena.ne.jp/answer ダミー

◎質問者からの返答

ありがとうございました。参考にさせていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ