[[20040318145135]] 『数式内の行番号が同じものをコピー』(IN)  >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『数式内の行番号が同じものをコピー』(IN)

[こぴー??]

  A     B    C    D
1  =P1   
2  =W1
3  =J1
4  =P2
5  =W2
6  =J2
7  =P3
8  =W3
9  =J3

 セルA1・A2・A3、セルA4・A5・A6…というように、
数式内の行番号が同じものを1つのグループとみたて、
そのグループ単位で行番号を単純にずらしていきたいのですが。。。
手間をかけずにできる方法、教えてください!


 このようなことでは、どうでしょう。
 1.A1、A2、A3に各、'=P1、'=W1、'=J1と入力する。
 2.これらを選択し、下にフィルドラッグして、連続データを作成する。
 3.そのまま、データ、区切り位置、完了。      (LOOKUP)


 別のやり方で、A1、A2、A3に
=INDIRECT("P"&INT((ROW()+2)/3))
=INDIRECT("W"&INT((ROW()+2)/3))
=INDIRECT("J"&INT((ROW()+2)/3))
として、フィルドラッグ。
(KAMIYA)


 LOOKUP・KAMIYAさん、ありがとうございます。
応用できるかなと思って、シンプルに質問したつもりなのですが…
ちょっとわからないので続いてもうひといき教えてください。
このように(下記の4行を1グループとみたてた)数式の中にアル場合は?

 =Sheet3!D2
=Sheet3!H2
=("第"&Sheet3!J2&"年分")
=VLOOKUP(Sheet3!J2,料金表!$A$2:$C$23,2,FALSE)+VLOOKUP(Sheet3!J2,料金表!A2:C23,3,FALSE)*Sheet3!$H2

先の”P””W””J”に上の式を単純に置き換えていくだけだとうまくいきません…


 4番目の式はLOOKUPさんの方法では難しいかもしれません。
1番目2番目3番目はLOOKUPさんの方法が簡単ですが・・・。
 
1番目の式でヒント。(ここは学校なので、応用練習して
みてください)
 
 上記=Sheet3!D2は2行目に入力された式ですか?
もしそうであれば
=INDIRECT("Sheet3!D"&INT((ROW()+6)/4))
 
つまり、INDIRECT関数のカッコの中で本来の参照を表す
"Sheet3!D2"という文字列を作ってやるのです。
(KAMIYA)

 追加ヒント。
LOOKUPさんの手法で4行の数式をフィルドラッグして
文字列になった数式を必要分作成します。
1番目2番目3番目はこのLOOKUPさんの方法でうまくいくはず。
4番目の式のみが末尾のH2の部分が変化するだけでなので、
Sheet3!J2の部分だけをINDIRET関数でなんとかすればよいのです。
 
もうちょっと補足。
 
=INDIRECT("Sheet3!D"&INT((ROW()+6)/4))
は2、6、10・・・と4行おきに入力されていれば
Sheet3!D2、Sheet3!D3、Sheet3!D4と参照していく数式です。
なんとかしたい部分は "Sheet3!J2" という文字列。
これを一気に「INDIRECT何とか」と置き換えてしまう方法を
考えてください。
(KAMIYA)

 ありがとうございます…
しばし頭をひねってみます!(IN)

 推測で一部の数式を変更させていただいていますが、数式を使用しないものでは、
 1. A1、A2、A3に各、#=Sheet3!D2、 #=Sheet3!H2、#="(第"&Sheet3!J2&"年分)"。
 2. B1、B2、B3に各、#1、##1、###1とし、A1:B3を選択し、下にフィルドラッグして、
   連続データを作成する。C1以下には、1から連続データを入力する。
 3.B列は、入力個所を選択し、編集、置き換えで、#を削除する。
 4.A列の上記データの下に
   #=VLOOKUP(Sheet3!J2,料金表!$A$2:$C$23,2,FALSE)
   +VLOOKUP(Sheet3!J2,料金表!$A$2:$C$23,3,FALSE)
   *Sheet3!$H2
   と入力し、フィルドラッグして連続データを作成する。
 5.B列には、1から連続データを入力する。
 6.C列には、100000を複製する。
 7.入力データを選択し、B列>C列の昇順に並び替えを行う。
 8.A列を選択し、編集、置き換えで、#を削除する。
   の手順になるかと思います。

 (途中)
  A                         B    C
 #=Sheet3!D2                    #1   1
 #=Sheet3!H2                    ##1   2
 #="(第"&Sheet3!J2&"年分)"            ###1  3
 #=Sheet3!D3                    #2   4
 #=Sheet3!H3                    ##2   5
 #="(第"&Sheet3!J3&"年分)"            ###2  6
 #=Sheet3!D4                    #3   7
 #=Sheet3!H4                    ##3   8
 #="(第"&Sheet3!J4&"年分)"            ###3   9

 #=VLOOKUP(Sheet3!J2,料金表!$A$2:$C$23,2,FALSE)  1  100000
 +VLOOKUP(Sheet3!J2,料金表!$A$2:$C$23,3,FALSE)
 *Sheet3!$H2
 #=VLOOKUP(Sheet3!J3,料金表!$A$2:$C$23,2,FALSE)  2  100000
 +VLOOKUP(Sheet3!J3,料金表!$A$2:$C$23,3,FALSE)
 *Sheet3!$H3	
 #=VLOOKUP(Sheet3!J4,料金表!$A$2:$C$23,2,FALSE)  3  100000
 +VLOOKUP(Sheet3!J4,料金表!$A$2:$C$23,3,FALSE)
 *Sheet3!$H4
                                       (LOOKUP)


        A
 1 '=Sheet3!D2
 2 '=Sheet3!H2
 3 '=("第"&Sheet3!J2&"年分")
 4 =B4&C4&D4

 B4に
 '=VLOOKUP(Sheet3!J2
 C4に
 ',料金表!$A$2:$C$23,2,FALSE)+VLOOKUP(Sheet3!J2
 D4に
 ',料金表!A2:C23,3,FALSE)*Sheet3!$H2

 A1:D4を選択して下に必要分だけフィルしたあと
 A列を選択してコピー後、[編集]-[形式を選択して貼り付け]-[値]で貼り付け。
 そのまま[データ]-[区切り位置]で[完了]。
 B〜D列を削除。
 これで出来上がりです。

 作業列としてB〜D列が使えないなら、どこか端っこの列でフィルしておいても
 よいと思います。

 2つ目のVLOOKUPで料金表の範囲が絶対参照になっていないのも反映したいなら
 応用してください。

 (ramrun)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.