• ベストアンサー

セルの移動量で参照したい。

 A  B C D 1  あ い う え 2 お か き く 3 け こ さ し 上のような位置関係のデータを   A  B C D  E F  G H I  J K L 1 あ い う え お か き く け こ さ し このように変換したいのですが、 E1やI1は左となりのセルが参照しているデータの1行下で3列左のセルを参照するようにしたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! データはA~D列に必ず入っているとしての一例です。 関数でやる場合はE1セルを =INDEX($A:$D,INT(COLUMN(D1)/4)+1,IF(MOD(COLUMN(A1),4)=0,4,MOD(COLUMN(A1),4))) (エラー処理はしていません) としてオートフィルで右へコピーではどうでしょうか? もしVBAでやる場合は 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(i, 1), Cells(i, 4)).Cut Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Select ActiveSheet.Paste Next i End Sub 'この行まで 尚、一旦マクロを実行すると元に戻せませんので別Sheetにコピー&ペーストしてマクロを試してみてください。 余計なお世話かもしれませんが、当方使用のExcel2003では列方向には256列までしかありませんので、64行までのデータしか表示できません。m(__)m

その他の回答 (2)

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

計算問題であり、小学生に、パズル的問題でやらしても、わかる子が多いと思う。 エクセル関数は、持ってくるところの元のデータのあるセルを指定しないとならない。 普通はそのセルは同行の他列などが多いが、本件は自分セル(関数を入れるセル)の位置で、持って来る(見るべき)セルの位置が変わるのが特徴。 しかしルールがあるからできるので、そのルールは何か? 4列で1行下のデータを見るべきだから、自分の列数を4で割った商の行が見るべき行になる。 そして見るべき列は(その上述の行の)4で割った余りの列である。やや大雑把に言ったので正確には下記で説明する。 (1を引いて、結果に+1している,INT((COLUMN()-5-1)/4)+1など常套手段なので注意) 全体的には用いる関数は、INDEX関数である。 例データ A1:D3 「あいう・・」などより、この方が直感的に判りやすいだろう。 1 2 3 4 5 6 7 8 9 10 11 12 ーーー F列から右に回答が出るようにしているが、(其れで下記の式に、ー5が入っている) 理解のために下記Xの式の第2引数と第3引数を単独で採り上げて分解してやってみる。 列と行の決定 下記式の行部分と列部分の式を分けて実験すると 行 1 1 1 1 2 2 2 2 列 1 2 3 4 1 2 3 4 上の行の式 =INT((COLUMN()-5-1)/4)+1 下の行の式 =MOD(COLUMN()-5-1,4)+1 最終的に式はF1に =INDEX($A$1:$D$100,INT((COLUMN()-5-1)/4)+1,MOD(COLUMN()-5-1,4)+1)  <---X 右方向に式を複写する。 元データの最終以後は空白を返すようにIF関数を被せるべきだが、省略する。

beer-daisuki
質問者

お礼

皆様迅速な回答ありがとうございました。 おかげさまで解決いたしました。

noname#204879
noname#204879
回答No.1

Sheet2!A1: =OFFSET(Sheet1!$A1,(COLUMN()-1)/4,MOD(COLUMN()-1,4))

関連するQ&A

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • エクセルマクロでの参照の仕方

    お世話になります。 早速質問させていただきます。 A1からA5までセルの位置が入っています。 B列には店舗名が入っています。 C列には数量が入っています。      A       B        C 1     B19     a店     10 2     G19     b店     20 3     L19     c店     30 4     Q19     d店     40 5     V19     e店     50 上の様なデータが有り、A列のデータがsheet2でC列のデータを入力する各セルになります。 sheet1のA列のデータを参照して、sheet2のセルにC列のデータを入れたいのですが(例えば「Sheets("sheet2").Range(B19)」には「10」を入れる)、セル内の文字列をセルの対象とすることができるのでしょうか。教えてください。、回答でなくアドバイスでも結構です。よろしくお願いします。

  • 複数のセルの引数を絶対参照にする方法

    エクセル2010を使っています。 複数のセルの最初の引数を一度に絶対参照にしたいです。 やりたいことを、添付した図で具体的に説明します。 この図には、frame1,frame2,frame3,の3つの基本の表(A列からD列の部分)があります。 また、frameX(I列からL列の部分)もあります。 今、作業は、E列からH列で行なっています。 まず、 F3には、=IF(J3=0,0,B3) G3には、=IF(K3=0,0,C3) ・・・ H7には、=IF(L7=0,0,D7) という関数を入れました。 この後、E1からH7を、コピー貼り付けして、 frame3-2までを完成したいです。 ですが、このままですと、frame2-2も、frame3-2も、それぞれの5行3列の値は全て0になってしまいます。 そこで、 F3には、=IF($J$3=0,0,B3) G3には、=IF($K$3=0,0,C3) ・・・ H7には、=IF($L$7=0,0,D7) と、5行3列に入れた(15個のセルの)、最初の引数を絶対参照にしたいです。 (実際の表は37行45列で、frameの数が200あります。) 複数のセルに入っている、最初の引数を一度に絶対参照にする方法はあるのでしょうか? よろしくお願いします。

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • セルの相対参照について

    たとえば、あるシートAのA1セルが別のシートBのA1を参照しておりシートAのA2がシートBのC3(A1から列を2つ行を2つ移動したセル)を参照している状態で、シートAのA1の参照セルをシートCのB2に変更したときに自動でシートA2の参照セルをシートCのD4に変更できるような方法はあるでしょうか? 質問の内容がわかりにくいかもしれませんが、是非よろしくお願いします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

専門家に質問してみよう