- ベストアンサー
エクセルの関数による自動化方法を教えてください
- エクセルでの作業を効率化するためには、数式を使用して自動化する方法があります。
- しかし、Sheet2とSheet1のデータの特徴が異なるため、困難が伴います。
- Sheet2は毎月変動するデータベースであり、Sheet1は固定のフォーマットですが、行の順番が異なります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セルの切取りや削除挿入等を行っても、なるべく正しい値が抽出される様にしました。 まず、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の範囲に貼り付けて下さい。 以上です。
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
お礼遅くなりまして申し訳ございません! あなた様の回答も大変参考になりました!! 本当に有難うございます!!!
お礼
お礼遅くなりまして申し訳ございません。 決算で忙しくなかなかできなかったのですが、先ほどやってみました。 すんなり出来て感動いたしました。。 すごく感謝しています。 本当に有難うございます。
補足
詳細に回答いただきありがとうございました! 凄く助かります。 家に帰ってから早速試してみます! あとでまたお礼書き込みます!