エクセルの関数による自動化方法を教えてください

このQ&Aのポイント
  • エクセルでの作業を効率化するためには、数式を使用して自動化する方法があります。
  • しかし、Sheet2とSheet1のデータの特徴が異なるため、困難が伴います。
  • Sheet2は毎月変動するデータベースであり、Sheet1は固定のフォーマットですが、行の順番が異なります。
回答を見る
  • ベストアンサー

エクセルの関数について

お暇な時で構いませんのでアドバイスいただけると助かります。 毎月、月報を作成しています。 どういうことかというと、Sheet2の貼り付け元から、Sheet1の貼り付け先へ数字を貼り付けるのですが これを、数式を入れて自動化できないか検討していますが、なかなかうまくいきません。 Sheet2の列C(7月2日)と行2(24時間ホルター心電図)が交わるセルに「4」という数字が入っています。 その数字をそのまま、Sheet1の「24時間ホルター心電図」と「2(日付を表しています)」の交わるセルへコピーします。 これを31日まで、全項目分ひたすらコピーしていくのですが、このような作業のエクセルファイルが複数あるため、非常にこの作業が手間です。 数式を入れればなんとかなるかと思いましたが問題があって、 (1)Sheet2は元々、エクセル以外のデータベースから抽出したもので、毎月新しく抽出しています。 毎月項目も増減があります(たとえば、今月は「24時間ホルター心電図」の項目が存在しますが、来月はこの項目の行自体出てこないときもある) (2)Sheet1は毎月固定のフォーマットですが、行の順番がSheet2と全く違いバラバラです。 以上2つの問題の壁をどうしても乗り越えられません。。 質問の意味が不明であれば、出来るだけ補足いたしますので、 お力を貸していただけないでしょうか。 宜しくお願い致します。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 セルの切取りや削除挿入等を行っても、なるべく正しい値が抽出される様にしました。  まず、Sheet1(貼り付け先)のC4セルに次の数式を入力して下さい。 =IF(ISNUMBER(VLOOKUP(INDEX($B:$B,ROW()),'Sheet2(貼り付け元)'!$A:$AF,MATCH((TEXT($B$1,"yyyy/m")&"/"&INDEX($3:$3,COLUMN()))+0,'Sheet2(貼り付け元)'!$A$1:INDEX('Sheet2(貼り付け元)'!$1:$1,255),0),FALSE)),VLOOKUP(INDEX($B:$B,ROW()),'Sheet2(貼り付け元)'!$A:$AF,MATCH((TEXT($B$1,"yyyy/m")&"/"&INDEX($3:$3,COLUMN()))+0,'Sheet2(貼り付け元)'!$A$1:INDEX('Sheet2(貼り付け元)'!$1:$1,255),0),FALSE),"")  次に、Sheet1(貼り付け先)のC4セルをコピーして、Sheet1(貼り付け先)のC4~AG24の範囲に貼り付けて下さい。  以上です。

0716100555
質問者

お礼

お礼遅くなりまして申し訳ございません。 決算で忙しくなかなかできなかったのですが、先ほどやってみました。 すんなり出来て感動いたしました。。 すごく感謝しています。 本当に有難うございます。

0716100555
質問者

補足

詳細に回答いただきありがとうございました! 凄く助かります。 家に帰ってから早速試してみます! あとでまたお礼書き込みます!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! Sheet2の1行目はシリアル値のようなので、Sheet1もシリアル値に変更してみてはどうでしょうか? Sheet1のC3セル(セルの書式設定から表示形式は ユーザー定義 → d としておきます)に =IF(MONTH(DATE(YEAR($B$1),MONTH($B$1),COLUMN(A1)))=MONTH($B$1),DATE(YEAR($B$1),MONTH($B$1),COLUMN(A1)),"") という数式を入れ31日のAG3セルまでオートフィルでコピーしておきます。 これでシリアル値の日付になります。 C4セルには =IF(COUNTIF('Sheet2(貼り付け元)'!$A$2:$A$100,$B4),INDEX('Sheet2(貼り付け元)'!$B$2:$AF$100,MATCH($B4,'Sheet2(貼り付け元)'!$A$2:$A$100,0),MATCH(C$3,'Sheet2(貼り付け元)'!$B$1:$AF$1,0)),"") という数式を入れ、列方向・行方向にオートフィルでコピー! 尚、Sheet2の空白セルと一致する場合は「0」が表示されてしまいますので、 メニュー → ツール → オプション → 「表示」タブ → 「ゼロ値」のチェックを外しておきます。 参考になりますかね?m(_ _)m

0716100555
質問者

お礼

お礼遅くなりまして申し訳ございません! あなた様の回答も大変参考になりました!! 本当に有難うございます!!!

関連するQ&A

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

    エクセルの関数。 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行あります。) 教えて頂けないでしょうか?

  • エクセルのフィルタリングされたのデータコピー

    Excel(2003、またはそれ以降)の質問です。 フィルタで抽出(可視化された)したデータだけをコピーし 別シートのフィルタで抽出したセルだけに張り付けることは可能でしょうか? (例) フィルタにより、シートAの1・2・5行目を抽出し、可視化された項目セルのみをコピー ↓ フィルタにより、シートBの3・6・9行目を抽出し、可視化された項目セルに張り付け。 ※普通にやろうとすると、コピーした内容が、シートBの不可視セルにまで張り付けられてしまいます。 ※コピー元、貼り付け先のセルのサイズや書式は同じです。 今はVLOOKUPで、シートA・Bの共通項目をキーにセルの内容を引っ張ってきてるんですが もう少し楽にコピペできればな、と思い質問しました。 分かりにくい質問ですみません。 何か良い方法があれば、教えてください。

  • エクセルの操作

    エクセルでフィルタで抽出した行をコピーして他のシートにコピーしたセルの挿入するの作業をしたいのですが、コピーしたセルの挿入の項目がでてこなくて。(右クリックした状態)コピーしたセルの挿入ができません。 何か方法があれば教えてください。

  • エクセル 関数について

    ▼質問内容 【図1】 コード  商品番号  業者名    商品名   上代   下代 11111    a      ※1     えええ     2,000   ※2 ※1、【図2】の一覧から、えええが最安値の業者名を抽出したい。 ※2、【図2】にある最安値店舗の下代を抽出したい。 【図2】 コード  商品番号  業者名    商品名    上代   下代 11111    a      テスト      えええ     2,000    1,000 11111    a     あああ     えええ     2,000    1,300 11111    a     いいい     えええ     2,000   1,250 11111    a     ううう      えええ    2,000    800 ▼解説として、 図2の表がシート2のA1セルからF1セルには項目名が2行目から下方に各データが入力されているとします。 シート1では図1がA列からF列の1行目に項目名があるとして、C2セルには次の式を入力して、式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。その後にその式をF2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 こちらの設定をすれば、解決するとご教示頂いたのですが・・・ =IFERROR(INDEX(Sheet2!$C:$F,MATCH(MIN((IF((Sheet2!$A$2:$A$1000=$A2)*(Sheet2!$B$2:$B$1000=$B2),Sheet2!$F$2:$F$1000))),Sheet2!$F:$F,0),COLUMN(A1)),"") 行数が増えてきたのと、【図1】のデータ配列を変えなくてはいけなくなってしまい、 結果として最安値ではない業者名が抽出されてしまうといった事態になってしまいました。 【図1】 コード  商品番号  業者名  ブランド名  商品名  上代   下代 11111    a      ※1     いいい   えええ   2,000   ※2 解決策が見当たらず、非常に困ってしまいました。 どなたか、解決方法をご教示頂けませんでしょうか? 宜しくお願い致します。

  • データ抽出のコピーの仕方を教えてください。

    エクセル2007で表を作っています。 シートAに、1行目が項目で2行目以降データです。350行ほどあります。 シートAのそのデータにフィルタを使って、3件ほど、抽出しました。 シートBに抽出したデータと1行目の項目を列幅やセルの色などそのままコピーしたいのですが、 コピー→貼り付けだと、書式がコピーできません。 項目と抽出したデータをそのまま、まるっとコピーできないでしょうか?

  • エクセルの関数の貼り付け方法について

    エクセル2003を使用して関数計算表を作成しています。 IF関数の中にAND関数を使用して数式を作ったのですが そのままコピーしてしまうと変換してほしい数字が変換されません 下記に詳細を書きました エクセルのシート1にこのような基本形の数式があるとします =IF(AND(T4=2,D9=77),F8,"") 次にこの数式をシート2にコピーして =IF(AND(T6=2,D11=77),F10,"") というふうに変換したいのですが 現状ではコピーして貼り付けが終わった状態から 手で数字を一文字ずつ消して打ち直していますが膨大なデータ量でして 大変苦労をしています 何とか皆様のお知恵をお借りしたいと思いまして質問させていただきました よきアドバイス宜しくお願いいたします すみません。補足をします。 シート1のセルA1の数式がこれです =IF(AND(T4=2,D9=77),F8,"") このシート1のセルA1の数式 =IF(AND(T4=2,D9=77),F8,"")を シート2のセルA1にコピーして =IF(AND(T6=2,D11=77),F10,"") という数式にしたいのです 現状ではシート2のセルA1に貼り付けが終わった =IF(AND(T4=2,D9=77),F8,"")を T4→T6へ、D9→D11へ、F8→F10へ一つ一つ手入力で 修正しております。膨大なデータ量です(涙) お願いします

  • Excelのシート間のコピー&貼付け

    皆様にお聞きしたいのですが。。m(_ _)m あるシートで作成したデータ(罫線等は入れてません。セルに入力したデータのみです)を、一番上の項目名のみまず最初に別シートにコピーしました。 そして元データでフィルタで抽出した間違いがあったデータのみ、複数の行番号をドラッグで選択して別シートにコピー&貼付けをしていたら、なぜか元のシートと列の数が合わなくなりました; 列の数は40前後と多いのですが・・・ 一番上の項目名と途中か合わなくなっていました(T-T) 普通に行を選択してコピー、そして別シートへ貼付けしていただけなのですが。。 こうゆうことってあるのでしょうか??? どなたか、どうかご教授ください。宜しくお願い致します。。 補足 ちなみに、ちゃんとコピー先のシートのA2(項目行の先頭の下の行)にコピーしたのですが・・。

  • エクセルのことです。。。 数式の入れ替えについて・・・。

    いつもいつもとてもお世話になっています。 今回教えていただきたいのは、エクセルの表に入れた数式を入れ替えるのに 簡単な方法がないか、と思い、質問させていただきます。 既に作成された損益計算書の数値を、経営分析の為に別のフォーマットに反映させる作業をしています。 経営分析用シートの セルA1に入っている数式は、 =「損益計算書 本店」シートの$A$1 です。 経営分析用シートの セルA3に 入れたい数式は  =「損益計算書 支店」シートの$A$1 です。 セルA1の数式をセルA3にコピー&貼り付けして  “本店”の部分を “支店”に書き直して作業をしていますが、 とても効率が悪いです。しかも、12か月分×40項目×4社分くらいあって、 とても大変です!!  何か良い方法はないものでしょうか?  ※ちなみに 固定の$は 行にも列にも必要という条件です。

  • エクセル(2003)のコピーと貼り付けについて。

    エクセル(2003)のコピーと貼り付けについて、操作を自動化したいです。 VBA初心者です。 同じフォルダ内にAファイルとBファイルがあります。 Aファイルにはシート1からシート4まで有り、シート1とシート2にシート3と4を比較したデータを表示させています。 シート1とシート2はA1からG1まで項目として、A2からデータが表示されます。約20行程度、表示される行数は毎日変わります。 Bファイルにはシート1しかありません。A1からG1まで項目とし、A2からデータが表示されています。約100行。毎日変わります。 (Aファイルのシート1とシート2の表示されているデータを貼り付けていく為) Aファイルのシート1に表示されているデータ(A2から)を仮に20行としBファイルの101行目(入力されているデータのすぐしたの行)に貼り付け、Aファイルのシート2に表示されているデータ(A2から)を仮に20行とし、120行目に貼り付け。 毎日コピーする範囲や貼り付けをするセルが変わっていく、固定の範囲、セルではない。この作業を毎日、コピー貼り付けで操作しています。 この操作をラクにしたいです。 困っていることは、コピーする範囲が毎日変わってしまう。(行数が増減するため) 貼り付けるセルも変わってしまう、(行数が増減するため) 分かりずらい説明になっていましたら、申し訳ないです。 よろしくお願いします。

  • エクセル2010 結合セルに関数のコピー

    同じエクセルファイルのシートで、以前は出来た下記のことが出来なくなってしまいました。 結合したセルにある関数を数式バーのコピーで、同じく結合したセルに貼り付ける。 ・貼り付けるセルの結合を解除すればできます。 ・数式バーをコピーするとき、以前は反転させたまま右クリックでコピーを押せるのですが、今回から右クリックをすると反転が消えてしまうようになりました。(でもコピーはしているようです) 同じファイいるの中の別のシートでは、そのような症状がなく、結合したセルにも貼り付けできます。 ・数式はVLOOKUPです。   よろしくお願いいたします。

専門家に質問してみよう