• 締切済み

Excel関数について,参照データの範囲が変わる時

Excelの関数について教えてください。 まずExcelで、”Sheet1とSheet2があり、Sheet2には、Sheet1のデータをもとに情報が入力されるように関数{IF(Sheet1!A1="","",Sheet1!A1)}を200行目まで入力されている”ものがあるとします。 それを使って以下のような作業を行います。 1. 職場のシステムからExcelデータを抽出する 2. 抽出したデータをエクセル(sheet1)に貼り付ける。 3. Sheet2にSheet1をもとにした計算結果が表示される 以上が現在、行っている作業です。 ただ問題があり、毎回、sheet1に貼り付けるデータの範囲(行数)が異なるため、sheet2のどこまでに数式を設定しておけばいいのかわかりません。今は適当に200行目まで数式を入力してあります。 『質問』Sheet1に貼り付けるデータの範囲(行数)と同じ範囲(行数)分だけ、Sheet2にも数式が表示されるようにしたい。(例)sheet1に2345行あるデータが貼り付けられた→それをもとに、Sheet2に関数を2345行目まで、自動で入力する。 大変お手数ですが、分かる方教えて頂けますか?よろしくお願いします。

みんなの回答

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

#1です。 やり方に拘りがあるなら 特に私から申し上げることはありません。 数式でのリンクなんてやってる限り 改善のしようがありませんので。 > ちなみに、Microsoft Queryは会社で使用できません。 どういう理由でですか? 禁止されているのですか? だとしたらどうやって 禁止しているのでしょう。 それはともかく Excelから直接接続を作成すればいいだけだと思います。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.1

> Sheet2に関数を2345行目まで、自動で入力する。 「入力」を自動化するのはマクロ以外ありません。ただこんなことにマクロを使 うくらいなら そもそも数式で対応するのを止めた方がいいくらいです。 根本的なやり方の問題だと思います。 Excelのバージョンが不明ですが 2007以降 なら データの取り込み自体を見直した方が早いと思いますけど。 > 1. 職場のシステムからExcelデータを抽出する これを外部データの取り込みの Microsoft Queryで取り込むのが良いかと思います。 ちょっとした計算なら SQLで計算させてから取り込むこともできます。 それが無理でもテーブル書式になっているので 隣りに計算結果を入れておけば 最 終行がどうのと気にする必要もありません。つまり Sheet2は必要ありません。

Yosiyuki0314
質問者

補足

おっしゃる通り、根本的にデータの取り込み方に問題があると思います。ただ、記入している通り、職場のシステムだからこそ、データの抽出方法を変えることができません。 そのため、データを抽出しては、必要ない列を削除し、また、並び替えるという作業を毎月のように行っています。 その作業が少しでも、楽になればと思ったのですが、何か方法はありませんか? ちなみに、Microsoft Queryは会社で使用できません。また、上記の通り、今回の作業の一番の目的は、列の削除及び並べ替えであり、計算などは行いません。

関連するQ&A

  • Excel関数のデータ参照について教えて下さい。

    Excel関数のデータ参照について教えて下さい。 営業店の資料を作成していますが、次のような関数はどうするのでしょうか。 A1セルにID,B1に営業店と課を反映する場合で、別シートにあるIDをA1に入力するとB1に対応した 営業店と課が表示されるようには。 (例)  sheet1     A     B 1 100200 東京支店販売課 2 100201 新宿支店営業課   sheet2    A     B 1 ID 営業所担当課 2 100200 東京支店販売課 3 100201 新宿支店営業課 通常はVLOOKUP関数等使用すると思いますが、参照セルを表示せずに、ダイレクトに入力したいのですが。 sheet2のA2のIDをsheet1のA1に入力するとsheet2のB1の表示がsheet1のB1に反映させる方法です。    よろしくお願いします。

  • ExcelのINDEX関数がうまく参照出来なくなってしまいました

    Excel2000を使用しています。 引き継いだファイルの関数がうまく表示できなくて困っています。 元に戻したいのですが、どのようにしたらもとにもどせるでしょうか? sheet1で、sheet2の住所録を参照して、該当番号に合う住所が表示されています。 Sheet1の数式が入る場所は「=INDEX(住所,A1)」となっています。 A1には、1~300の数字が入っており、その数字を参照して該当住所が表示されるようになっています。 しかし、なぜか280番台以降の住所が、#REF!でうまく参照出来なくなってしまいました。 仕方ないので、関数の挿入でINDEX関数を挿入して、 =INDEX('sheet2'!I1:I300,A1) と入力したら、1~300までの住所はうまく表示出来るようになったのですが、 もとの数式の通りに「参照している部分を”住所”」と表示したいのですが、どのようにしたらいいのでしょうか? 他のINDEX関数を使っているセルは、=INDEX(電話番号,A1)のようになっています。 分かりにくい説明ですみません。よろしくお願いします。

  • Excel2003 データ範囲の行数を数えたい

    お世話になります。 掲題の件で質問が御座います。 現状「H77 : AB105」の範囲のうち「H77 : AB86」までの 10行にデータが入力されています。 「H : AB」までは空白は無いように入力します。 何か関数を使って「F5」に10行データがあるので「10」と表示させたいです。 恐らく「=ROW()」とかを使うのかな?と思いましたが、どのように使ったら 行数を数えてくれるのか分かりません。 初歩的な質問かも知れませんが、お分かりになるかた 何卒 宜しくお願い致します。

  • Excel2007:Microsoft quaryで外部データ(別のExcelファイル)からデータを抽出するときの「見出し行」の扱いを任意に設定したい

    Excel2007でMicrosoft quaryを使用して外部データ(別のExcelファイル)からデータを抽出するとき、ウィザードに従って「クエリに含むデータの列」を選択しますが、その時、抽出元のエクセルファイルの1行目に入力したデータから判断して選択することになると思います。 やりたいことは、抽出元のデータでは2行目に見出しを設定しているので、2行以降の行のデータを抽出したい、つまり2行目を見出しの行とみなして1行目を抽出の範囲から除外したいというこのなのです。(ちなみに一行目には2行目以降のデータについて簡単な集計のための数式や関数を入力しています。) 今までの経験からしてExcelは大体において一行目を見出しとみなすようにできているという印象なのですが、おわかりの方がいらっしゃいましたら教えていただけると助かります。よろしくお願いします。

  • VLOOKUP関数:別シートにある参照範囲が変動する場合

    スポーツクラブで学童会員の名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、データが入力されているのは  2行目からです。 ・別シートのデータを参照するため、シート2のデータが入力されて  いる範囲に「参照範囲1」という範囲名をつけました。 【状況】 現在設定している数式は B2=VLOOKUP(A2,参照範囲1,2,FALSE) なのですが、以下の場合は「参照範囲1」で設定した範囲とは 異なる範囲のデータを参照しなければなりません。 ・入会者がいる場合:データを追加するため、行が増える ・退会者がいる場合:データを削除しブランクを解消するため、  行が減る 【質問】 上記状況の場合、VLOOKUP関数に加えてどのような関数を使用すれば 別シートにある参照範囲の変動に対応できるのでしょうか? 会員が増減するたびに、新たに参照範囲を設定し範囲名をつけ直す という作業は避けたいのですが・・・ ご教示いただけますよう、何卒宜しくお願い申し上げます。

  • Excel2010でのHLOOKUP関数

    Excel2010で列(縦方向)に1組のデータ(200個程度)を入れ、現在140組のデータが入っています。別シートに票を作成し、票内の各セルにHLOOKUP関数を入れ、この140列×200行のデータベースから、指定した列(検索値)のそれぞれの行からデータを抽出し表示するようにしています。 これまでは、検索値を入力すると、該当する列内の値を票内に反映していてくれていたのですが、この度新たな列を増やしたところ、その列の値を表示してくれません。関数内のデータの範囲はその列以上に広く指定しています。わかりにくい説明で申し訳ないのですが、考えられる原因はありますか。よろしくお願いします。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

    例えばこんなデータなのですが、 2002/07/01 99 25 36 2002/07/05 55 33 25 2002/08/01 80 20 51 日付の入っている列を検索して、2002/07/01から2002/07/31 の範囲ならば、その行のデータを別のシートに抽出したいのですが、 日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら between 9999/99/99 and 9999/99/99って感じで簡単にできるの ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って >=2002/07/01 <=2002/07/31 と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して くれると考えたのですが、なぜかダメでした。 (↓こういう入力をしました) =IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

  • 【Excel】数式(参照するシートの変更)について

    Excel2003を使用しています。 あるファイルに『1月』『2月』…『12月』『決算』という 13枚のシートがあります。 『決算』シートのB8セルに「=IF('9月'!B6="","",'9月'!B6)」と数式が 入力されていて、この数式の中の参照するシートを9月→10月に 変更する場合、数式を9→10に書き換えてコピペする作業以外の 方法というのはあるのでしょうか? 同様の数式がB8:O45の範囲(1ページ目)に入力されていて (いくつか空欄のセルもありますが)これが20ページありますので 何か良い方法があれば教えていただきたいです。 (参照するシートと行が2行ずれているのも作業がしづらいところです) よろしくお願いします!

  • エクセルの3D参照で困っています!

     Excelの未熟者です!宜しくお願いいたします。  「Sheet1」に入力した文字が「Sheet2」や「Sheet3」にも表示されるように設定されており、「Sheet1」入力文字の299行までは「Sheet2」「Sheet3」にも正確に表示されます。ところが、300行目から408行までは「#N/A」(値無し)が表示され、409行目以降は「#N/A」すら表示されません。    各Sheetの各行における所定のセル内の関数に誤りはないようなのですが何故このような状態になるのでしょうか?  なお、行数を何度か増やしたことがあるのですが、それが何か原因しているのでしょうか。関数は行に応じて正しく連続コピーされているのですが。

専門家に質問してみよう