- ベストアンサー
フィルでの等間隔コピー
エクセル初心者の私にお知恵を貸して下さい。 どの様に説明していいかも分らないので 簡単に質問させていただきます。 以下の様な表があるとします。 A B C 1 10 2 10 3 10 4 10 5 10 6 10 これをC1、D1、E1にA1、A3、A5と1行ずつ空けた等間隔で C2、D2、E2にA2、A4、A6と1行ずつ空けた等間隔で 値を返して行きたいのですがフィルを使って可能でしょうか? A B C D E 1 10 A1 A3 A5 2 10 A2 A4 A6 3 10 4 10 5 10 6 10 C1からの列には、IF関数を使用して A1~A300までの数値で10以上なら○ 10以下ならブランクとしたいのですが C1=IF($A1>=1,"○","")と数式を入れて フィルで列方向に引っ張ると D1=IF($A1>=1,"○","")となってしまうので A1をA3に置き換える作業がでてしまって困ってます。 $A1部分を関数に置き換えてのやり方もあるようでしたら ご教授いただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>これを応用して色々と利用したいのですが COLUMN()-3)*2の-3と*2の意味と ROW()-1,0)の-1と0の意味が理解できません 規則的に飛び飛びのデータを数式で表示したいときはOFFSET関数が利用できます。(使い方はヘルプを参照してOFFSET関数を調べてください) このとき、規則的な数字を取得するためにROW関数やCOLUMN関数を使用しています。 ROW()のように括弧の中に何も入れないと、そのセルの行番号を取得できます(COLUMN関数も同じです)。 たとえばC1セルでROW()を入力すれば「1」、COLUMN()を入力すれば「3」が返ります。 したがって、括弧の中に何も入力しない数式を使用した場合は、入力するセル位置によって数式を調整する必要が出ることになります。 このような場合は、以下のように明示的にA1セルを参照するようにすれば、どこのセルに入力しても同じ結果を表示することができます。 =OFFSET($A$1,(COLUMN(A1)-1)*2+ROW(A1)-1,0) >C1=IF($A1>=1,"○","")と数式を入れて フィルで列方向に引っ張ると D1=IF($A1>=1,"○","")となってしまうので A1をA3に置き換える作業がでてしまって困ってます。 この質問ならINDIRECT関数を利用する方が簡単かもしれません。 =IF(INDIRECT("A"&(COLUMN(A1)-1)*2+ROW(A1))>=1,"○","")
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
今の質問者に意っても無駄と思うが、こういうのはVBAというプログラムでやると考えやすい。 例データ 1 2 3 4 5 6 7 8 ・・・ コード 標準モジュールに貼り付け Sub test02() j = 3 'C列スタート。起点列をC列とする d = Range("A65536").End(xlUp).Row 'A列最下行取得 For i = 1 To d Cells(i, j) = Cells(i, "A") '起点列 Cells(i, j + 1) = Cells(i + 2, "A") '起点列の隣の列 Cells(i, j + 2) = Cells(i + 4, "A") '起点列のその隣の列 Next i '繰り返し End Sub 最終データ行より3行前に終わるならFor i = 1 To d-2にする。 ーーー 結果 C列より以右列 1 3 5 2 4 6 3 5 7 4 6 8 5 7 9 6 8 10 7 9 11 以下略 質問では列がヅレ手はじまって見えるが回答の方では全てC列から始まって要るようだ。こちらでやってみた。 ずらすのも多少コードを変えればできる。 ーー 関数の場合もデータをセット刷る側のセルを元に考えてA列のどの行を持ってくるか計算する必要がある。 C1に=INDEX($A$1:$A$100,ROW(),1) D1に=INDEX($A$1:$A$100,ROW()+2,1) E1に=INDEX($A$1:$A$100,ROW()+4,1) C1:E1の式を下方向に式を複写 結果 1 3 5 2 4 6 3 5 7 4 6 8 5 7 9 以下略。 D,E列の式を横方向の複写でやる場合は C1に =INDEX($A$1:$A$100,ROW()+(COLUMN()-3)*2,1) と入れてE列まで横方向に式複写。 C1:E1の式を下方向に式を複写。
お礼
ありがとうございます。 確かに現段階では難しすぎるので勉強します><
- BookerL
- ベストアンサー率52% (599/1132)
余りスマートではありませんが、C1 に次の式を入れ、下へ一つコピー、そのあと、C1C2 を右へ二つコピー =OFFSET($A$1,(COLUMN()-3)*2+ROW()-1,0) でとりあえずいけると思います。
お礼
ありがとうございます! 大変助かりました。 これを応用して色々と利用したいのですが COLUMN()-3)*2の-3と*2の意味と ROW()-1,0)の-1と0の意味が理解できません>< もし宜しければご教授願います。
お礼
ありがとうございます。 とても参考になりました。 もっと勉強を重ねて邁進します。