• 締切済み

Excel 数式の相対参照について

相対参照を使い、ドラッグによる数式のコピーを 試みたいのですが、例えば・・・ C1にA1を表示させる=A1という式を入れます。 次にC2にA3を表示させる=A3という式を入れます。 次にC3にA6を表示させる=A6という式を入れます。 このような3の倍数での条件(a1,a3,a6,a9・・・) で数式のコピーを試みた場合、この条件でコピーできません。 同様なケースで・・・ C2にA1を表示させる=A1という式を入れます。 次にC3にB1を表示させる=B1という式を入れます。 次にC4にC1を表示させる=C1という式を入れます。 このようなアルファベット順での条件(A1,B1,C1・・・) で数式のコピーも同様で、できません。 他に、このような条件を満たす方法はありませんか?

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

まだ閉じられていないので追加です。 >C2にA1を表示させる=A1という式を入れます。 >次にC3にB1を表示させる=B1という式を入れます。 >次にC4にC1を表示させる=C1という式を入れます。 C2に、=A1 C2を列方向にコピー =A1 =B1 =C1 ・・・・・・・ セル範囲が選択状態のまま = を # に「すべて置換」 選択範囲をコピー 「形式を選択して貼り付け」の「行列を入れ替える」で貼り付け # を = に「すべて置換」

  • Randomize
  • ベストアンサー率70% (38/54)
回答No.5

このようなケースは相対参照とは言わないのですが、そういった参照方式をする為の関数が存在します。 OFFSET関数というのですが、使用方法は以下のようにしてください。 =OFFSET([基準セル],[下へずらす数],[右へずらす数]) 本当は=OFFSET([基準位置],[下へずらす数],[右へずらす数],[範囲の幅],[範囲の高さ])なのですが、1×1のセルを参照するだけですので幅・高さの項目は省略可能です。 一見これだけですと何も出来なさそうですが、これにROW()関数又はCOLUMN()関数を使用します。使い方はどちらも同じで =ROW([セル])またはCOLUMN([セル]) と記述します。また、[セル]を空欄にして=ROW()のようにすると自身のセルが対象になります。ROW関数がセルの行番号をCOLUMN関数がセルの列番号を取得する関数になります。 下方向へ3個飛ばしで読みたいのであれば[下へずらす数]の場所へROW()*3、右方向へ連続で読みたいのであれば[右へずらす数]の場所へROW()を入れる感じです。実際には「ずらす数」ですので微調整する部分は試行錯誤してくださいね。横方向へ数式をコピーして同じことをする場合はROW関数をCOLUMN関数に置き換えます。 OFFSET関数についての参考サイトのURLを貼り付けておきます。 OFFSET関数・ROW/COLUMN関数と相対/絶対参照を上手く組み合わせるとかなり奥の深い参照が出来ますので頑張ってトライしてみてください。

参考URL:
http://officetanaka.net/excel/function/function/offset.htm
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>C1にA1を表示させる=A1という式を入れます。 >次にC2にA3を表示させる=A3という式を入れます。 >次にC3にA6を表示させる=A6という式を入れます。 C1には、=A1 C2には、#A3 C3には、#A6 C2とC3を選択 選択枠の右下角の■(フィルハンドル)を下方にドラッグ&ドロップ ドラッグしたセル範囲が選択状態のまま 「編集」メニューの「置換」で # を = に「すべて置換」 >C2にA1を表示させる=A1という式を入れます。 >次にC3にB1を表示させる=B1という式を入れます。 >次にC4にC1を表示させる=C1という式を入れます。 「ツール」メニューの「オプション」で、「数式」を「R1C1参照形式を使用する」に設定 C2に、#R1C1と入力 選択枠の右下角の■(フィルハンドル)を下方にドラッグ&ドロップ ドラッグしたセル範囲が選択状態のまま 「編集」メニューの「置換」で # を = に「すべて置換」 「ツール」メニューの「オプション」で、「数式」を「R1C1参照形式を使用する」設定を解除 絶対参照の$が不要なら、ドラッグしたセル範囲が選択状態のまま 「編集」メニューの「置換」で 検索する文字列に、$ 置換後の文字列に、何も入力しない として「すべて置換」

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 >3の倍数での条件(a1,a3,a6,a9・・・) ⇒C1に=INDEX(A:A,(ROW(A1)-1)*3)を設定、下方向にコピー  又は、C1は=A1、C2に#A3、C3に#A6として、C2:C3を選択、下方向にコピー→コピー範囲を選択→編集→置換で#を=に全て置換 >アルファベット順での条件(A1,B1,C1・・・) ⇒C2に=INDEX($1:$1,,ROW(A1))を設定、下方向にコピー

  • zongai
  • ベストアンサー率31% (470/1474)
回答No.2

1,3,6,9… 1は3の倍数ではありません。 3移行は3の倍数であるなら、1の部分は個別設定。 [C1]=INDIRECT(ADDRESS(ROW()*3,1)) これをコピーしていけば、 [C1]=A3 [C2]=A6 [C3]=A9 と同等になります。 質問にあるような[C1]=A1で、ドラッグするなら、 [C1]=IF(ROW()=1,A1,INDIRECT(ADDRESS((ROW()-1)*3,1))) 一行目だけの為にIFを用いています。 この無駄を省けば単純に [C1]=A1 [C2]=INDIRECT(ADDRESS((ROW()-1)*3,1)) 以後コピー とする方がスマートかと。 後半の質問の方は [C2]=INDIRECT(ADDRESS(1,ROW()-1)) これで同等の結果となります。 回答として求めているのが何なのかよくわかりませんが、参考にどうぞ。

  • nametom
  • ベストアンサー率39% (17/43)
回答No.1

C1=A1 と入力して C2=INDIRECT("A"&(ROW()-1)*3) 上記式を下にコピー C2=INDIRECT("A"&COLUMN()-2) 横にコピーでどうですか?

関連するQ&A

専門家に質問してみよう