- 締切済み
エクセル関数 vlookup
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますので、参考程度で・・・ ↓の画像のように作業用の列を設ける方法です。 左側がSheet1・右側がSheet2とします。 Sheet2のA1セルの表示形式はユーザー定義から 0月 と入力し、OK → A1セルには 7 のように数値のみ入力します。 Sheet1の作業列E2セルに =IF(A2="","",MONTH(C2)) という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のA3セルに =IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$E$1:$E$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))),"") これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → A3セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列・行方向にフィルハンドルでコピー! これで画像のような感じになります。 ※ 8月を表示したい場合はA1セルに 8 と入力します。m(_ _)m
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご希望の集計をするなら、ピボットテーブルを使用するのが簡単です。 まず準備として元のデータ(1行目に項目名がある)を選択して、ホームタブの「テーブルとして書式設定」しておきます(このように設定しておけば、データが増えても自動的にデータ範囲を拡張してくれます)。 次に「挿入」「ピボットテーブル」から、行フィールドに「日付」と「名前」Σ値に金額(添付画像の項目名の場合)をドラッグし、作成されたピボットテーブルの日付の上で右クリックし「グループ化」で「月」を選択します(添付画像の左下のテーブル)。 もう一度ピボットテーブル上で右クリックし「ピボットテーブルオプション」から、必要に応じて行の総計や列の総計のチェックを外し、表示タブで「従来のピボットテーブルレイアウトを使用する」にチェックを入れるなどして、その他のレイアウトのオプションを適宜設定します。 関数で対応するなら、E2セルに「7」と入力し、セルの書式設定でユーザー定義にして「0"月"」にしておき、F2セルに以下のような数式を入力し下方向にオートフィルします。 =INDEX(A:A,SMALL(INDEX((MONTH(テーブル1[日付])<>$E$2)*1000+ROW(テーブル1[日付]),),ROW(1:1)))&"" 同様にG2セルには以下の式を入力して、セルの書式をユーザー定義にして「0;;;」と設定して、下方向にオートフィルします。 =INDEX(B:B,SMALL(INDEX((MONTH(テーブル1[日付])<>E$2)*1000+ROW(テーブル1[日付]),),ROW(1:1))) ご使用のExcelのバージョンが記載されていなかったので、ひとまず2007以降のバージョンの操作を説明しましたが、Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には、必ずバージョンを明記するようにしましょう。
- keithin
- ベストアンサー率66% (5278/7941)
>7月があれば あ 1,000 と自動表示する関数をいれたい それだけならVLOOKUP関数でふつーに出来ますが、そうじゃないでしょ? 7月の該当するデータがダラダラっとあるだけ並んで欲しいのでしたら、基本エクセルにはそういう関数はありません。 添付図を参考に次の通り、間違えないように作成してください。 手順: シート1のB列にあいう、C列に金額、D列に日付を記入する シート1のA列に A2: =IF(D2="","",MONTH(D2)&"月"&COUNTIFS($D$2:D2,">"&D2-DAY(D2),$D$2:D2,"<="&EOMONTH(D2,0))) と記入、以下コピーする シート2のA1に「7月」と言葉で記入する B1に =IF(ROW(B1)>COUNTIF(Sheet1!$A:$A,$A$1&"*"),"",VLOOKUP($A$1&ROW(B1),Sheet1!$A:$D,COLUMN(),FALSE)) と記入、右に下にコピー貼り付ける。