• ベストアンサー

【EXCEL】 条件に当てはまるものだけ別ファイルに毎回表示

今簡易版承認システムを作っているのですが、どうしても前に進めなくて困っています。。どなたか分かる方がいらっしゃいましたらぜひお力をお貸しいただきたいです! A、B、Cと3種類のファイルがありまして、「承認用ファイル」という別ファイルのsheet1,sheet2,sheet3にそれぞれリンクで情報を表示させています。 (A、B、Cのファイルは管理表であり毎日登録情報が追加されていく為、入力があると「承認用ファイル」にも反映されます。) やりたいことは以下です。 ●(1)その「承認用ファイル」に入った情報で、承認が「未」のものだけを別ファイル「上司承認ファイル」の1つのsheet内に表示させる。 ●(2)上司が「上司承認ファイル」にあるチェックボックスをオンにするとそのページにあるもの全てに承認がおりる。 ●(3)承認がおりたものは「承認用ファイル」では「未」が「済」になって、次からは「上司承認ファイル」には表示されなくなる。 というシステムを作りたく、●(1)~(3)までリンクやEXCELの数式だけで流れだけはできたのですが、どうしても 《1》【承認が「未」のものだけを毎回「上司承認ファイル」の表の定位置に表示させ、「済」になったものは表示させない】ということと、 《2》【チェックボックスをオンにし「承認」にした後保存し、次ファイルを開いたときはそのチェックボックスがオフになっていてまた「承認」することができる】ようにすることができず、非常に困っています。。。 このような仕組みは可能なのでしょうか?? もし可能でしたら、やはりこれはマクロをくまなければ不可でしょうか? VBA初心者の為なるべくここまで数式だけでやってきたのですが、 どなたか分かる方やアドバイスを下さる方がいらっしゃいましたら、どうぞ宜しくお願いいたします!! 不明な点がございましたらできるだけすぐにお答えできるようにしますので何卒宜しくお願いします。。*

  • yu332
  • お礼率45% (5/11)

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>そしてその「承認用ファイル」から「上司承認用ファイル」にまた「=+」でデータをひっぱってきている状態です。。。 現在までのファイルは単純に他ブックのセルを順次リンクさせているだけの状態ということでしょうか? たとえば、ブック名が「AA」でシート名が「承認シート」という承認用ファイルのE列(済などの文字を入力)が未記入の行のデータだけを「上司承認用ファイル」に引っぱってきたい場合は以下の式を入力して、右方向および下方向にオートフィルします(日付の欄は数式を少し工夫する必要があります)。 =INDEX([AA.xls]承認シート!$A:$A,SMALL(INDEX(([AA.xls]承認シート!$E$2:$E$11<>"")*1000+ROW($E$2:$E$11),),ROW(A1)))&"" 今回のようなケースでは、上記のような配列数式など、複雑な数式を多用する必要がありますので、紛れが多い他ブックからのセル参照よりも、まずブックを分けずに(別シートでまたは同じシート内で)数式を作成する練習をされたほうが、結局目的地に早く着くことができるのではないかと思います(まず同じシートで特定の列が空白のセルを抜き出す式をマスターしてください)。 補足ですが、前回の回答では(2)で「関数だけで処理する場合は、元データには何も記入せず、承認用ファイルで「済」を入力してこれを元データに反映する数式を入力しておきます。」と回答しましたが、これを直接行うと循環参照になりますので、やはり一部マクロを利用する手順が必要になると思います。 いずれにしろ、ご希望の機能がすべて満たされるファイルを作るには何段階かのクリアしなければならない問題がありますので、まず第一段階の特定の列の空白セルの行を抜き出す関数がうまくいくかチャレンジしてください。 最終的には、やりたい事や、ご自分でできない部分をピンポイントで絞って質問されたほうが具体的な回答が得られると思います。

yu332
質問者

お礼

>現在までのファイルは単純に他ブックのセルを順次リンクさせているだけの状態ということでしょうか? はい。まさにその通りです… そして上司承認用ファイルでは    A    B     C     D    E      8 番号 発行日 有効期限 氏名 承認状況 9 10 : とし、E9に=IF(D12="","",IF($J$4=TRUE,"承認","未承認")) という数式を入力してチェックボックスをオンにすると リンクしたJ4がTRUEとなり、承認が下りて「承認用ファイル」のE列にも 「済」と表示されるようになっている状態です。。 ですがMackyNo1さんのアドバイスのおかげで 未記入の行のデータだけを「上司承認用ファイル」に引っぱってくることが可能だとわかりましたので、教えていただいた数式をもとに、まずは特定の列が空白のセルを抜き出す方法にチャレンジしてみようと思います。 またわからなければ次回はきちんとピンポイントで絞って質問したいと思います。ご意見本当にありがとうございました。

yu332
質問者

補足

何度もすみません! 教えていただいた式を参考に、何度か練習をし、 抜き出すところまではできたのですが、 やはりオートフィルをすると日付のところがおかしな表記に なってしまいます。(発行日、有効期限) 何かヒントをいただけないでしょうか??>_< ちなみにファイルBBのA12のセル =INDEX([【AA】.xlsx]BB!$A$9:$D$28,MATCH(ROW()-11,[【AA】.xlsx]B!$G$9:$G$28,0),COLUMN()) とし、右方向及び下方向にオートフィルしています。 ●ファイルAA(Sheet1)     A      B      C       D      E      8   番号   発行日   有効期限   氏名  承認状況 9   301  2009/10/5  2009/4/3  ●●     10  302  2009/11/5   2009/5/4  ○○    :    :     :         :     :      : ●ファイルBB               (Sheet1の表)                 A      B       C       D     E       11   番号   発行日   有効期限   氏名  承認状況 12   301   ??      ???     ●●     13   302    ??     ???     ○○    :     :     :        :      :       : 宜しくお願いします。

その他の回答 (3)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>教えていただいた式を参考に、何度か練習をし、 抜き出すところまではできたのですが、 やはりオートフィルをすると日付のところがおかしな表記に なってしまいます。(発行日、有効期限) 数式を複雑にしないため日付のセルもひとまず同じ式で対応するように回答しましたが、数字のセルでは式の最後の「&""」をつけない数式にして、セルの書式を日付にしてください。 その場合、データがない部分はエラー表示されますので、配列数式で文字列を返すセルを参照して、そのセルが空白の場合は空白を返すIF分を追加してください。 すべての列を配列数式で処理すると計算負荷が高くなるので、もしA列の番号が重複がないなら、この番号だけ配列数式で求めて、それ以外の列はVLOOKUP関数で引っ張ってくるほうが合理的です。 この場合、提示した配列数式は文字列の数字を返すので、この文字列数字のセルを参照する場合は以下のようにして数値化して検索する式にして下さい。 =VLOOKUP(A9*1,・・・・・・・・・・)

yu332
質問者

お礼

MackyNo1さん すごい! きちんと表示できるようになりました!! ありがとうございます! また何かあった際はどうぞ宜しくお願いいたします!!!!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

情況がややこしく書いてあるが、条件による他シートに抜きだしをしたいのだろう。他シートぐらいでいい加減ややこしい。この質問は他ブックへ。 抜き出しは関数では向いてない課題で、VBAやアクセスをやれる人向けの課題だ。それに加え他ブックと関連させているので初心者には勉強する点が増える。 関数ででも処理を希望するのかと思ったら、VBAでやりたいということか。であれば表題にでも、質問の早いうちにVBAでと明記すべきだ。 関数では他シート程度の場合、Googleで「imogasi方式」で照会すれば、抜き出し問題の例が沢山出てくる。私の回答したものが出るが、方法(回答者の回答は)は他の方が色々と出している。 ーー VBAでの回答は、コードを書いてくれという、丸投げになるので規約違反で書かない。 (1)検索の操作をマクロの記録を取り、勉強し、条件に合う全ての行を捉えられるコード (2)他ブックのシートに、それら見つかった行のデータを写すコード (3)それら(1)(2)を実行するキッカケと結びつける仕組み などを勉強のこと。思い立ったとき改めて、プログラムを実行するならこの仕組みはいらない。 何しろ別ブックを扱うコートは一段と難しさを増すのだ。 ーー 質問には、実情を簡素化した各ブックのシートの列・行、セルのデータを示して質問してほしい。私の経験からデータ行数は各々5行ぐらいで良いのでは、と思う。

yu332
質問者

補足

アドバイスありがとうございます。 ややこしい書き方をしてしまい、申し訳ございません。 おっしゃる通り、条件による抜き出しをしたかったのですが 質問の仕方が未熟でございました。 反省しております。 尚、言葉足らずでしたが、 できましたら関数での処理を希望しています。 不可と言われた場合はVBAを勉強して取り組もうと思っていたのですが まずは教えていただきましたGoogleの「imogasi方式」での例を参考にして 勉強してみたいと思います。 また遅いかと思いますが「実情を簡素化した各ブックのシートの列・行、セルのデータを示して質問してほしい」というご意見をいただきましたので 簡単にではございますが、表記させていただきます。 ●承認用ファイル(Sheet1)     A      B      C       D      E      8   番号   発行日   有効期限   氏名  承認状況 9   301  2009/10/5  2009/4/3  ●●    未 10  302  2009/11/5   2009/5/4  ○○    未 :    :     :         :     :      : ●上司承認ファイル               (Sheet1の表)           ⇒右側(Sheet2の表)      A      B       C       D     E      F     G 8   番号   発行日   有効期限   氏名  承認状況 9    301  2009/10/5  2009/4/3  ●●    未承認 10   302   2009/11/5  2009/5/4  ○○    未承認 :     :     :        :      :       : このようになっております。 管理表→承認用ファイル→上司承認用ファイル →の所は各々=+[【承認申請用ファイル】.xlsx]sheet1!$A9のように、「=+」でリンクさせている状態です。 承認用ファイルで使用しているシートは4種類あり、上司承認ファイルでは その4種のシートの表を右に並べています。 上の図だと、G列8行からまた番号、発行日、有効期限…となります。 重ね重ね分かりにくい表現で申し訳ございません。。 貴重なご意見ありがとうございます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

元データのリストがどのような形式になっていのかわからないので、一般的な回答になりますが、 >●(1)その「承認用ファイル」に入った情報で、承認が「未」のものだけを別ファイル「上司承認ファイル」の1つのsheet内に表示させる。 元データがリスト形式になっているなら関数だけで表示することが可能です。 >●(2)上司が「上司承認ファイル」にあるチェックボックスをオンにするとそのページにあるもの全てに承認がおりる。 この部分は基本的に承認用ファイルから元データを変更する処理が必要となりますので、基本的にマクロを使う必要があります。 関数だけで処理する場合は、元データには何も記入せず、承認用ファイルで「済」を入力してこれを元データに反映する数式を入力しておきます。 >●(3)承認がおりたものは「承認用ファイル」では「未」が「済」になって、次からは「上司承認ファイル」には表示されなくなる。 上記のような設定にすれば自動的に「承認用ファイル」には表示されなくなります。 シートのレイアウトによって使用する数式が違いますので、元データや承認シートの項目名やレイアウトを具体的に提示していただければ、数式が提示できると思います。

yu332
質問者

補足

こんな複雑で面倒な質問に回答していただき本当にありがとうござぃます!! 補足をさせていただきます。 承認用ファイルには番号、名前、受付日、有効期限等が書かれた表がありまして、すべてデータは「=+」の数式でA、B、Cという別ファイルからもってきています。 そしてその「承認用ファイル」から「上司承認用ファイル」にまた「=+」でデータをひっぱってきている状態です。。。 おっしゃる通り元データがリスト形式になっているため、関数(IF文と+)だけで表示することができたのですが、 今の状態ですと、 上司承認用ファイルにどんどん情報が増えていき、毎回そのページ全員の承認を一気にとる形になってしまうのです… しかもチェックボックスが毎回オンになった状態でファイルが開く為、開くと承認がすでにおりた状態になっているというおかしな状態に… 「=+」でやるからダメなのでしょうか?? この関数だけで(1)~(3)までは一通りできたのですが、 《1》《2》が解決できず(;_;) 分かりにくいかとは思いますが、ご回答宜しくお願い致しますm(__)m

関連するQ&A

  • エクセルVBA チェックボックスのリンク先を条件により変更

    こんなことは可能でしょうか? sheet1,sheet2,sheet3,は同じフォームで、それぞれチェックボックスがあり、リンク先をそれぞれのシートのA1に設定しているとします。 sheetdataではそれぞれのシートの情報をVBAを使用して表示させています。(例えばsheet1からsheetdataに行くと、sheet1の情報がsheetdataに表示され、sheet2からだとsheet2の情報がsheetdataに更新されます) ここで、sheetdataにも同じチェックボックスがあるとします。 このチェックボックスに条件をつけて、sheetdataにsheet1の情報が表示されているときはsheet1のA1にリンクし、sheet2が表示されているときはsheet2のA1にリンクすると言ったことはできるのでしょうか? 要するに、sheetdata上でチェックボックスのON/OFFを変更した際、その元となるシートも変更できるようにしたいのです。 VBAでif関数などを使って、リンク先のシートを変更できればいいのですが・・・。コントロールの書式設定ではIf関数を使ってリンクするセルを指定することはできませんよね? どうかよろしくおねがいします。

  • 【Excel】指定されたファイルを開くことができま

    下記数式でリンクを設定(同ブック&別シート)した場合、移動できるファイルと「指定されたファイルを開くことができません」が表示され移動できないファイルがあります。 ファイル形式はどちらもxlsxです。現状は名前の定義にて対応しています。 =HYPERLINK(CELL("address",Sheet2!A1),"Sheet2へ移動") 両ファイルの違いと言えば、セルを右クリックした時に「リンク(I)」「ハイパーリンクを開く(O)」が表示されるか否か、です。 =HYPERLINK("#'Sheet2'!A1","Sheet2へ移動")でしたら移動しますが、この数式では移動先シートでセル位置が変わった場合に数式が変更されないのでCELL&addressでリンクを設定したいのです。 移動できないファイルは元々のファイル形式がxlsだったのが原因かと思いましたが、新規xlsxファイルにデータを貼り付け直しても移動できません。 セルそのものにリンクは貼ってありません。 ファイル名にカッコ()があるとダメというような書き込みを見た記憶がありましたが、カッコはありません。 「指定されたファイルを開くことができません」の原因は何でしょうか?

  • エクセル2003の条件付書式

    エクセル2003でシート全体のフォントを赤に設定してます。 1行目を選択状態にして条件付書式を次のように設定してます。 ・条件1  数式が =$A1<>"" のときフォントを黒(普段は空白です) ・条件2  数式が =$A2="済" のときフォントを黒(リストから済と未を選択します) ・条件3  数式が =$A3="済" のときフォントを黒(リストから済と未を選択します) 上記設定だと、条件1.2.3のいずれか一つでも該当するだけで 1行目のフォントが黒になりますが、条件全てを満たさないと フォントが黒にならないように設定するには、どうすればいいのでしょうか? 回答よろしくお願い致します。

  • Excel2010 ファイルが重い原因

    Excelファイルの動作が重いです。 セルに入力をする際に、Enterを押して次のセルに移動するのに2秒ほどかかります。 図のリンク貼り付けや、関数もそれなりに使用しているので、 その程度は普通のことなのでしょうか? 一応、 ・ファイルタブ→オプション→詳細設定→表示→ハードウェアのグラフィックアクセラレータを無効にするにチェックを入れる ・ファイルタブ→オプション→数式→エラーチェック→バックグラウンドでエラーチェックを行うのチェックを外す ・数式タブ→計算方法の選択→手動 の設定をし、 各ワークシート上の、リンクとコメントは削除してあります。 ブックの共有もされておりません。 データが入っていないと思われる部分に関しては、行および列の削除もしました。 ちなみにファイルサイズは2.8M程度ですが、 データが何万件も入っているというわけではありません。 他に考えられる原因があれば、教えて頂きたいです。

  • EXCELのチェックボックスでの表示を、他のリンクでも表示させたいんで

    EXCELのチェックボックスでの表示を、他のリンクでも表示させたいんですが・・ 今エクセルで、1枚目のシートに申込用紙のフォームを作成しています。 そこにチェックボックスでの質問形式が必要なので作ったのですが、 そのフォームが、手書きで言う複写式のように、 もう1枚のシートにも同じ値が出るようにリンクさせたいのです。 普通の文字だとリンクで、1枚目のシートに入力すると、 2枚目のシートに表示させることができるのですが、 チェックボックスの値だけが2枚目に反映しません。 チェックボックスの表示のリンク貼り付けって可能でしょうか・・ ご存知の方教えてください。

  • 別のファイルの条件にあう数値を反映させたい

    ファイルAはその日の発注個数 C列に順番がバラバラの商品名   O列に個数 のような表になってます ファイルBは一か月の発注個数 B1列に商品名  D1から1行ごとに個数が表示される表になってます ファイルBの商品名と同じ ファイルAの個数を ファイルBのD1に反映させるにはどうすればいいですか? ファイルBのD1に =('F:\発注\[1.xls]Sheet1'!$C$4:$C$43,B1,'F:\発注\[1.xls]Sheet1'!$O$4:$O$43) と自分なりにやってみたら#VALUE!の表記になりました 正しい数式を教えてください

  • 別のエクセルファイルからリンクの数式をコピペ

    ファイル1と2があるとして、 それぞれファイルにはシートA、Bがあります。 ファイル1で、シートBにはシートAからリンクがしてあり、 セル内の数式が='シートA'!$D$10というセルがあります。 このセルをファイル2のシートBの全く同じ場所に、 ファイル1と同様に、ファイル2のシートAからリンクしようと ファイル1のセルをコピーして、ファイル2に貼り付けると、 セル内は='[ファイル1.xls]シートA'!$D$10 で、データ自体はファイル1から飛んできてしまいます。 ファイル1の数式そのままをコピーして、ファイル2に 同じ数式になるように貼り付けることは可能なのでしょうか? 誰か御存知でしたら、教えてください。。。

  • エクセルでシート間のリンクを別のシートに変更したい!

    エクセルで、シート間のリンクの変更がしたいのですが・・・。→ひとつのブック内のいくつかのシートがリンクしています。概要を説明すると、シートCにはシートA・シートBからリンクさせた数式が入っています。今回はシートA・シートBそれぞれを作り直し(数式を手直しした表が入っています)それぞれシートA’、シートB’とし、シートCにリンクさせたいのですが・・・。シートCで検索・置換でシートA’、シートB’とやってみると値の更新というボックスが出てうまくいかない感じです。わかりづらい説明で申し訳ないのですがご教授お願いします!!

  • OpenofficeCalcでのシート振り分け

    open office.Calc(Mac)にて商品の在庫表を制作しており、 全商品をリスト化したsheet1、 販売済なものをリスト化したsheet2、 販売がまだなものをリスト化したsheet3 を制作したいと考えております。 ひとつの商品につき1行を使用しており、 列Aに販売済の物には「済」、販売がまだのものには「未」の文字を入れ、 列Aに「済」と入っている行はsheet2、 列Aに「未」と入っている行はsheet3へ自動で参照するようにしたいと思っております。 (「済」は「1」、未は「2」など、数字などでも構いません。振り分けられれば問題御座いません。) 恥ずかしながら関数などの知識はほぼ御座いません、 こういったものを作成することは可能でしょうか。 また、これをExcelで制作する場合も同様に可能でしょうか。 ご教授頂きたく、お願い申し上げます。

  • ファイルのダウンロードボックス表示

    教えて下さい。 WEB上にエクセルファイルがダウンロードできるようにリンクされていて、 それをダウンロードしようとクリックしたら「ファイルのダウンロード」というボックスが表示され、ボックスの中は 「このファイルを開くか、または保存しますか?<開く><保存><キャンセル>」と「この種類のファイルであれば常に警告する」と書かれています。 開くときに「この種類のファイルであれば常に警告する」のチェックをはずしてしまいました。 そうすると次から「ファイルのダウンロード」というボックスが表示されなくなってしまいました。 再度このボックスを表示させるにはどうしたらいいのでしょうか!!

専門家に質問してみよう