
No.2ベストアンサー
- 回答日時:
このご質問は、セルの列番号が右方向へ1つづ移動していく場合に3列ごとに同じ列番地を示す関数(※1)を見つければあとは、その列位置にあるセルの値を参照するだけで解決できることになります。
セルを参照する方法として(1)INDEX関数を用いる(2)OFFSET関数を用いる(3)INDIRECT関数を用いるなどの方法があります。
(1)と(2)についてはfujillinさんが既に数式をお示しになっています。
では、※1の関数はどのようなものかというと、fujillinさんの回答では「INT(COLUMN(C1)/3)*3-2」という数式が用いられています。
これに「=」を頭につけて、A2に記述して右方向へコピーしてみると、1,1,1,4,4,4,7,7,7,10,10,10,・・・となり、3個づづ繰り返す公差3の等差数列です。
初項1、公差3の等差数列のn項目は=1+(n-1)*3と表すことができるので、これを変形すると=3n-2となります。3個づつ、同じ値を繰り返す必要があるので、列数をcとすると、cを基準としてnを計算するなら、cが3増えるまで、nが増えないようにすればよいことが判ります。
そこでINT関数を用いてcを3で除して小数点以下を切り捨てすることにします。nは1から始まりますのでcの初期値は3です。
従って3個づつ繰り返す初項1、公差3の等差数列のn項目は、列数cを用いて記述すると、n(つまりc-2)項目=3*INT(c/3)-2(但しcは3以上)となり、fujillinさんの回答にある「①INT(COLUMN(C1)/3)*3-2」(※COLUMN(C1)は3)と同等の数式であることが判ります。
3個づづ繰り返す公差3の等差数列になる数式は、上記のほか、公式を変形せず、そのまま使うと、「②1+INT((COLUMN()-1)/3)*3」となりますし、その他にも「③CEILING(COLUMN(),3)-2」「④FLOOR(COLUMN()-1,3)+1」「⑤COLUMN(A1)-MOD(COLUMN(C1),3)」などもあります。
これと、前述の(1)(2)(3)を組み合わせればよいわけですから、今まで列挙したものだけでも15種類の数式が作成可能だということになります。
つまり、fujillinさんの回答にある、「=INDEX(1:1,INT(COLUMN(C1)/3)*3-2)」は、「=INDEX(1:1,CEILING(COLUMN(),3)-2)」とか、「=INDEX(1:1,FLOOR(COLUMN()-1,3)+1)」とか、「=INDEX(1:1,COLUMN(A1)-MOD(COLUMN(C1),3))」としてもよいことになります。
さらに言えば、fujillinさんの回答にある=OFFSET(A1,,-MOD(COLUMN(C1),3))という数式は(2)と⑤を組み合わせたものです。
fujillinさんの回答のOFFSET関数は参照する基準セルが移動する数式ですが、移動させずに、
=OFFSET($A$1,,FLOOR(COLUMN()-1,3))
のような数式にすることもできます。ここで、FLOOR(COLUMN()-1,3)の部分は上記④の数式からマイナス1したものです。OFFSET関数では基準セルから何セル分シフトするかを指示する必要があるので、参照基準セル1列目の場合、列番号の1ではなくシフトする列数である0を指示する必要があるからです。この部分を①~⑤の他の数式からマイナス1したものに入替できます。
例)=OFFSET($A$1,,CEILING(COLUMN(),3)-3)
さて、続いて今迄登場していないINDIRECT関数を用いた数式もお示しします。A2セルに、
=INDIRECT("R1C"&CEILING(COLUMN(),3)-2,0)
という数式を記述し、右方向へコピーすればOKです。
もちろん「CEILING(COLUMN(),3)-2」の部分を上記①~⑤の他のものに入替しても大丈夫です。
No.1
- 回答日時:
こんばんは
>3列ごとに取得するセルを変更したい場合
大雑把な考え方として、「列番号を3で割って端数を切り捨てて3倍する」ような要領で行えば、3列ずつ同じセルを参照して、次のセルへ移動ようなことが可能です。
具体的には、A2セルに
=INDEX(1:1,INT(COLUMN(C1)/3)*3-2)
を入力して、右方へフィルコピーではいかがでしょうか?
似た様な考え方ですが、
=OFFSET(A1,,-MOD(COLUMN(C1),3))
でも、結果は同じになると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【教えて!goo ウォッチ 人気記事】風水師直伝!住まいに幸運を呼び込む三つのポイント
記事を読む>>
-
エクセルについて
Excel(エクセル)
-
EXCEL 和暦を西暦に変換する方法について
Excel(エクセル)
-
Excelについて
Excel(エクセル)
-
-
4
Excel処理について、教えて下さい。 下記表は、サンプルです。(実際には千件以上あります) A列に
Excel(エクセル)
-
5
エクセルで値ではなく関数を参照する方法
Excel(エクセル)
-
6
VBAで、シート間の転記するコードを教えてください。
Excel(エクセル)
-
7
エクセル マクロ 行や列を削除しても 常にC3セルに背景色を維持
Excel(エクセル)
-
8
Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに
Excel(エクセル)
-
9
「入力した数値」と「その数値プラス2の数値」をセル番地にする方法を教えて下さい。
Excel(エクセル)
-
10
IF関数について
Excel(エクセル)
-
11
エクセルのユーザ定義にて、電話番号の一部を非表示にできますか?
Excel(エクセル)
-
12
関数を教えてください。
Excel(エクセル)
-
13
1から9まで表示するのに必要なボタン
Excel(エクセル)
-
14
列の複数ある空白セルを飛ばして、セルに並べて表示したい
Excel(エクセル)
-
15
エクセル 住所間の通勤時間
Excel(エクセル)
-
16
Excelについて質問です。 シート1の検索値例えば *ABC* をシート2.3.4から検索して、シ
Excel(エクセル)
-
17
エクセルで月をアルファベットに変換したい。
Excel(エクセル)
-
18
エクセルで30日以内に同内容の入力があったら色を付ける
Excel(エクセル)
-
19
エクセル/列追加時、合計行の計算式
Excel(エクセル)
-
20
エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルをクリック⇒そのセルに入力...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
EXCEL VBA セルに既に入...
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセル 足して割る
-
エクセルで縦に1112223...
-
Excelで、「特定のセル」に入力...
-
COUNTIF セルに色を塗るとカウ...
-
エクセルでオブジェクトを常に...
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
エクセル:文字コピーすると0...
-
Excel2003 の『コメント』の編...
-
ドロップダウンさせるボタンを...
-
VBAで特定の文字が入力されたセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
Excelで、「特定のセル」に入力...
-
【Excel】 セルの色での判断は...
-
EXCEL VBA セルに既に入...
-
COUNTIF セルに色を塗るとカウ...
-
エクセルのセルの枠を超えて文...
-
Excelで教えてください。 バー...
-
エクセルの一つのセルに複数の...
-
Excel2003 の『コメント』の編...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで住所を2つ(町名迄と番...
-
ドロップダウンさせるボタンを...
おすすめ情報