
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ええと……。
説明長くなるよ。これは算数的な数字を弄り回すことになります。
何をするかというと、規則性を数式で示すのです。
これ、結構めんどくさいので考えるのが嫌になりますが、コラえてください。
一回でも理解できれば、次からは簡単に考えることができるようになります。
原本 → 複製
1 A A
2
3
4
5 B
6 B
7
8
9 C
10
11 C
こんな感じに複製したいということですよね?
原本 → 複製
1 0 0
2
3
4
5 1
6 1
7
8
9 2
10
11 2
こんな感じに「番号」が振られていると思ってください。
規則性を持たせるため、行番号も
原本 → 複製
0 0 0
1
2
3
4 1
5 1
6
7
8 2
9
10 2
こんな風になっていると思ってください。
すると、
原本側は、
0および4の倍数の行に値があり、
複製側は、
0および5の倍数の行に値がある
ことになります。
複製側は行番号を5で割って余りがゼロの行に複製したい。
複製する「番号」は行番号を5で割って小数点以下の値を切り捨てた「番号」になります。
その行番号は「番号」を4倍した行になります。
・・・
ROW関数はパラメーターを与えないと、そのROW関数が使われている行番号を返します。
B12セルに「=ROW()」と入力すれば「12」が返ってきます。
ということで、複製側のセルに
=(ROW()-1)
で、行番号を1引いた値を読み取れます。
これを5で割って余りが0なら原本のセルを読みに行くという数式を作ればよい。
(MOD((ROW()-1),5)=0
条件はこれで良いでしょう。
次に、何番目のデータを拾うかを検討します。
INT((ROW()-1)/5)
拾う「番号」はこれで良いでしょう。
そして拾いに行く行番号は4倍すればよいので、
INT((ROW()-1)/5)*4
になりますね。
つづいて、データを取得するセルを指定するのですが、このやり方は多数あります。
自分は INDIRECT関数 を使ってみます。
この関数は文字列をセル番地に置き換えてくれる関数です。
=INDIRECT("A" & "12")
これは
=A12
となります。
シート名を含める場合は
=INDIRECT("Sheet2!A" & "12")
のようにシート名まで含めて指定すればよい。
……ということで、
INDIRECT("Sheet1!" & "A" & INT((ROW()-1)/5)*4)
これで指定できます。
「"Sheet1!" & "A" &INT((ROW()-1)/5)*4)」
↑
この"A"は実際に参照したい列の記号に置き換えてください。
・・・
条件と条件成立時の数式ができたので、IF関数に入れると
=IF((MOD((ROW()-1),5)=0 , INDIRECT("Sheet1!" & "A" & INT((ROW()-1)/5)*4) , "")
という感じに出来上がります。
修正するならば、
=IF((MOD((ROW()-1 ),5)=0 , INDIRECT("Sheet1!" & "A" & INT((ROW()-1 )/5)*4) , "")
↓
=IF((MOD((ROW()-1+α),5)=0 , INDIRECT("Sheet1!" & "A" & INT((ROW()-1+β)/5)*4) , "")
のように α と β に適切な数字を入れて、実際のセルの行位置に合わせるくらいでしょうか。
この決め方は回答の冒頭で説明した内容を理解してれば一瞬で決められますが、
適当な数字を入れてちょうどいい感じに拾えるよう、何度も試行錯誤して決めてもOK。
なお、INDIRECT関数で使っている ”Sheet1!” と ”A” は文字列ですので、フィルコピーしても変化することはありません。
しかし変化しないということですので、原本側の列を増やしたり減らしたりした場合に参照セルの変化に対応しないので注意してください。
(A列を挿入すると "A" だったものはそのままなので参照する列がずれます…"B"に修正する必要あり。シート名を変えても文字列には反映されなのでこれも手動で修正する必要あり)
なお、エラー処理は考えていません。
都合の良い位置に数式を埋め込んでください。
・・・
とまあ、こんな面倒なことを頭の中で考えながら【規則性】とやらを読み取って数式として組み立てるんです。
お礼が遅くなってしまい大変申し訳ありません。
とてもとても親切に解説いただき誠にありがとうございます!!
私の説明が誤っていて、原本は0,3,6,9に値が入っていて、複製は、0,4,8,12と入る様にしたかったのですが、ご説明を読んでいてもはや頭から湯気が出そうなレベルです。。凄すぎです。。。
まずは、いただいた内容を元に、自分がやりたかった行数で試せるかトライしてみます…自信ないですけど(T_T)
貴重なお時間を割いていただき本当にありがとうございました!!!
No.1
- 回答日時:
こんにちは
>どの様な関数を使えばいいのてしょうか?
内容としてはセルの参照を行えばよいだけですが、参照先のセル位置を計算する必要があります。
規則性があるので、その規則に基づいて計算をすれば良いでしょう。
具体的なレイアウトが不明なので、例示になりますが・・・
・Sheet1の「三行おきに入力」されているセルを、A1、A5、A9・・とします。
・Sheet2の表示させたいセルを、A1、A6、A11・・とします。
結果的に、
Sheet2のA1にSheet1のA1の内容
Sheet2のA6にSheet1のA5の内容
Sheet2のA11にSheet1のA9の内容
・・・・・
が表示されればよいものと仮定します。
(位置が異なる場合は、同じような要領で調整すれば可能です)
Sheet2に式を設定するとして、表示しないセルは空白表示で良いのなら、表示するセルは
MOD(ROW(),5)
が1の時にだけ表示すれば良いことがわかりますので、
=IF(MOD(ROW(A1),5)=1,セルを参照する式,"")
としておけばよいことになります。
「セルを参照する式」は行番号が1,6,11・・の時だけ実行されますが、Sheet1の
INT(ROW(A1)/5)*4+1 行目を参照すれば良いことになります。
(上記は、1,6,11・・行目では、1,5,9・・の値になります)
参照したいのが、Sheet1のA列なら、これを用いて
INDEX(Sheet1!A:A,INT(ROW(A1)/5)*4+1)
として参照すれば、目的のセルを参照することができます。
以上の内容をまとめると、Sheet2のA1セルに
=IF(MOD(ROW(A1),5)=1,INDEX(Sheet1!A:A,INT(ROW(A1)/5)*4+1),"")
の式を入れて、フィルコピーすることでできると思います。
※ 実際のセル位置は、ここで仮定した位置とは違うのではと推測しますので、適宜調整してください。
そのために、敢えて長々とした説明をしてありますので。
お礼が遅くなってしまい大変申し訳ありません。
銀鱗様へのお礼にも記載させていただいたのですが、私の説明が上手くなくて、折角お二人から貴重な知識をいただいたにも関わらずご厚意を無駄にしてしまいました…(T_T)
まずは、お二人からご説明いただいた内容を理解してみるところから始めてみようと思います。
貴重なお時間を割いていただき、本当にありがとうございました!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル、特定のシートにパス...
-
Wordで差し込み印刷時に表示す...
-
エクセルVBAでF2(ファンクション2)と...
-
accessへエクセルの複数のシー...
-
ハイパーリンクでジャンプした...
-
Excelでマクロ設定したが反映さ...
-
エクセルでブック内の倍率がバ...
-
エクセルで目次に自動でページ...
-
エクセルで、シートの名前を変...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
(エクセル)Indirect関数で、ハ...
-
別シートの文字列があったら現...
-
Excel、Aのシートにあって、Bの...
-
エクセル2003で、複数のシート...
-
Accessのテーブルを既存のExcel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
エクセルでブック内の倍率がバ...
-
エクセルで、シートの名前を変...
-
【ExcelVBA】マクロの入ったシ...
-
vba 複数のシートに、保護 解除
-
EXCELの図形(テキストボックス)...
-
特定の複数のシートに同じ処理...
-
Wordで差し込み印刷時に表示す...
-
Excelでマクロ設定したが反映さ...
-
ハイパーリンクでジャンプした...
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシート連番の振り直し
-
エクセル 非表示のシートをハ...
-
エクセルのシート名の変更がで...
-
Accessのテーブルを既存のExcel...
-
指定したシート名以外を非表示...
おすすめ情報