エクセルで特定の値を含む行を別シートに抽出して表示させたいのですがやり方がわかりません。
ほかの方の回答を見ても上手くいかなかったのでどなたか教えて頂きたいです。
やりたいのは複数のETCカード・車両がある(シート1)ので車両毎に抽出して表にしたい(シート2×車の台数分)のと、
更にそこから各日毎の使用金額を合算したものを計算したもの(シート3)が作りたいのです。
シート1には
A /B /C /D /E /F /G /H /I
利用日/時間/利用日/時間/入ったIC/出たIC/料金/車番/カードNO.
4/1 / / / /東京 /西宮 /8000/1234/
4/1 / / / /東京 /名古屋/5000/5678/
4/1 / / / /西宮 /東京 /8000/1234/
4/2 / / / /京都東 /小矢部 /3000/1234/
4/2 / / / /沼津 /和気/5000/5678/
4/3 / / / /栗東 /川越/7000/1234/
4/3 / / / /高松檀紙/長岡 /9000/5678/
4/3 / / / /敦賀 /八王子/4000/5678
シート2には
A /B /C /D /E /F /G /H /I
1234の利用状況
利用日/時間/利用日/時間/入ったIC/出たIC/料金/車番/カードNO.
4/1 / / / /東京 /西宮 /8000/1234/
4/1 / / / /西宮 /東京 /8000/1234/
4/2 / / / /京都東 /小矢部 /3000/1234/
4/3 / / / /栗東 /川越/7000/1234/
シート3には
A /B /C /
/1234 /5678 /
4/1/¥16000/¥5000/
4/2/¥3000 /¥5000/
4/3/¥7000 /¥13000/
このようにシート1にカード情報をコピペすれば自動で計算してくれるように関数を組もうとしたのですが、ほかの方の回答をみて挑戦してもN/Aなどになってできません。
定期的に報告の必要があり、私以外はパソコンの操作が危なっかしく(今までの担当者は電卓で計算してやっていた模様)、また入力や計算の時間が十分に取れないので関数を使えば1度作れば後は時間短縮になるかと思い挑戦しています。
どなたかやり方を教えていただけませんでしょうか。
よろしくお願いします。
No.1
- 回答日時:
抽出する場合に、該当データが複数ある場合(今回なら車番)
その該当データと、それが上から何個目の一致か、をつないで、IDとして表示させるのが一番かと思います。
具体的には、J2=H2&"-"&COUNTIF(J$2:J2,J2)とすることで、J2には1234-1と表示されます。
可能なら左端にこういったIDの列を設けておけば、VLOOKUPで簡単に抽出できるのですが。
シート2にはA1に抽出したい車番が入っているとします。
不可能であれば、どこか別のセルに入力し、そのセルに合わせて変更してください。
表の形式を変更できな場合のために、VLOOKUPではない方法で。
A3=IF(COUNTIF(シート1!$H:$H,$A$1)>ROW()-2,"",INDIRECT("シート1!"&ADDRESS(MATCH($A$1&"-"&ROW()-2,シート1!$J:$J,FALSE),COLUMN()))
シート1のH列でA1と一致するデータの数がそのセルの行番号-2を超えている場合(3行目から表示するとしているので-2して、3行目を1行目とかぞえています)には空白、そうでなければ、シート1の「シート1のJ列で(A1のデータ)"-"(そのセルの行番号-3)に一致するデータの表示されたセルの行番号」行目で、この式の入力されたセルと同じ列のデータを表示する。
という式になっています。
例の場合、1234-1と一致するのがJ2なので、A3にはシート1のA2のデータが表示されるわけです。
この式をI列まで及び、一致するデータの数以上の行(最大でシート1のデータと同じ数まで可能性としてはあります)までコピーしてください。
シート3は複数の条件に一致するデータの合計、ということですので、SUMIFSを用いれば良いでしょう。
B2=SUMIFS(シート1!$G:$G,シート1!$A:$A,$A2,シート1!$H:$H,B$1)
シート1のG列の内、「シート1のA列がA列のデータに一致し、シート1のH列が1行目のデータと一致するもの」を合計する。
という内容になっています。
これを必要な範囲にコピーしてください。
ご回答いただきありがとうございました。
レイアウトを変更できないので後者のお答えを参考にさせていただきました。
他の方のご質問についている回答などと照らし合わせると、今後同じ壁に当たった方が、どの部分を変えればいいかがこれで記録として残ったと思います。
とても分かりやすい解説で、勉強になりました。
ありがとうございます。
No.2
- 回答日時:
(´・ω・`)
無理を言ってはいけません。
一朝一夕でできるものじゃない。
少しずつ覚えるしかありませんよ。
・・・本題・・・
まずは、やりたいことを正確に伝える努力をしましょう。
それにより問題点を把握しやすくなります。
(分かりにくいんだな。質問文の表現は)
…
Sheet1にはすべてのETCカード(車両台数分)の使用履歴が日付順に並んでいる。
Sheet3以降のシートに車両毎の使用履歴を表示させ、
Sheet2には日付と車両毎の使用料金の一覧表を作りたい。
…
のような書き方をしてくれたほうが分かりやすい。
(なんかデジャブな気分だ。どこかで同じことを指摘されませんでしたか?)
・・・
自分なら、
「並べ替え」と「フィルタ」機能、さらに「SUBTOTAL関数」を使って集計し、
併せて「ピボットテーブル」でやっつける。
言っちゃなんだけど、Excelはツールなんです。
便利な計算機です。
帳票出力にも対応している計算機と思えば、関数やらマクロやら使わなくても仕事はできます。
ですので、今までの担当者さん同様に電卓を使って数字を書き込むのもアリです。
便利に使いたいのであれば、自身が理解をして使うようにしましょう。
(作成したBookには使い方の説明や改善案を示したシートを別に作成するなどして第三者が見ても分かるようにしておきましょう)
・・・妥協点・・・
Sheet1を丸ごと参照する形でSheet2以降を車両台数分作りましょう。
そしてSheet毎に車両でフィルタを掛ける。
こうすれば何も考えず一つの車両の履歴を作成できます。
集計はピボットテーブルをお勧めしますが、ピボットテーブルの使い方は自身で調べてください。
使い方の説明をすると1冊の本が書けるくらいですので、実際の説明は省略します。
この機能はExcelで一番もっとも応用ができ便利に使える機能ですので是非身に着けてください。
・・・余談・・・
このように関数とか使わずにできちゃうもんなんですよ。
まずは目の前にあるExcelというツールで何ができるのかを「確認」して、「これは使える!」というものを見つけてください。
あとはそれを使えるように努力するだけで、いつのまにかExcelを使いこなせるようになります。
勉強するつもりがないのでしたら上司に相談して、ソフトウェア会社に集計用のExcelファイルを作ってもらうようにしましょう。
これ、自身にも会社にもプラスですので…マジ提案です。
ご回答ありがとうございました。
残念ですが今月だけ私が担当し、次月以降は再び元の担当者に戻ります。
その担当者、「デスクトップにショートカットの作成」すら理解できませんので、
「並べ替え」と「フィルタ」機能、さらに「SUBTOTAL関数」を使って集計し、
併せて「ピボットテーブル」でやっつける・・・なんて理解できるはずもありません。
私が今後も担当するのなら並び替えやフィルタ機能でよかったのですが。
関数使わずに処理できるなら良かったんですが、そうもいかないので関数に頼らざるを得なかった次第で、
外注して集計用のファイルを作成など夢のまた夢でしかない次第です。
No.3ベストアンサー
- 回答日時:
こんばんは!
一例です。
↓の画像では
まず、Sheet2のA1セルに表示したい「車番」を入力し
A3セルに
=IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$H$1:$H$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))),"")
配列数式なので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → A3セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
A3セルのフィルハンドルでI列までコピー → 各セルの表示形式はココで変更し
A3~I3セルを範囲指定 → I3セルのフィルハンドルで下へずぃ~~~!っとコピー!
Sheet3のB2セル(配列数式ではありません)に
=IF(COUNTIF(Sheet1!$A:$A,$A2),SUMIFS(Sheet1!$G:$G,Sheet1!$A:$A,$A2,Sheet1!$H:$H,B$1),"")
という数式を入れフィルハンドルで列・行方向にコピー!
これで画像のような感じになります。m(_ _)m
ご回答ありがとうございました。
さらに実例の表までご作成いただきありがとうございます。
ご指導いただいたとおりに作成し部分修正した結果、無事に完成しました。
これで思い残すことなく引き継げます。
とても分かりやすい解説でしたのでベストアンサーとさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 新幹線 なぜ関東の鉄道って遅いだけでなく、車両の快適性のかけらもないのでしょうか? 新幹線すら酷いよね 1 2022/03/31 17:46
- 地図・道路 関西エリアの高速道路に詳しい方に質問があります 2 2022/10/02 13:56
- 電車・路線・地下鉄 東京経由における途中下車と再乗車駅が異なる 4 2023/05/04 12:10
- 関西 KBS京都 あんぎゃでござる TOKYO MX 京都 名所 日曜日 東京駅 東海道新幹線 京都駅 1 2023/08/13 10:10
- 電車・路線・地下鉄 なぜJR西日本さんはお客様重視なんですか? JR東日本は客軽視なのに 4 2022/03/25 03:28
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- 電車・路線・地下鉄 有料特急はすいていないと意味がありませんか? 3 2023/04/20 13:07
- その他(交通機関・地図) なんで関西の交通網って天国状態なの? 1 2022/04/16 06:57
- 電車・路線・地下鉄 グリーン車の座席で不満がある人が多いですが、どう思いますか? 4 2023/05/15 00:12
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
Excelの棒グラフを多い順に並べ...
-
チュロス袋の代用
-
excel シート1の奇数(偶数)...
-
エクセルを利用して、日計と累...
-
エクセルで2つのシートに同じ名...
-
エクセルのシートをコピーして...
-
2つのシート間での重複データ...
-
条件にマッチする行を抽出するV...
-
エクセルで1行だけ数式が反映さ...
-
エクセル表で、複数行おきにセ...
-
VBA 縦のデータを横にするコード
-
ExcelVBAで日報のフォーマット...
-
EXCELで受験票を作成したい(名...
-
Excelにて 別シートからのデー...
-
エクセル シート毎に数字を変...
-
エクセルにて2つの列の組み合わ...
-
指定した条件でTRANSPOSE関数を...
-
Excelで複数のシートに列のグル...
-
Excelで複数要素からの注文管理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
エクセルを利用して、日計と累...
-
エクセルのシートをコピーして...
-
毎日の日計を別シートに自動で...
-
2つのシート間での重複データ...
-
条件にマッチする行を抽出するV...
-
excel シート1の奇数(偶数)...
-
指定した条件でTRANSPOSE関数を...
-
エクセルで○のついた項目を抽出
-
チュロス袋の代用
-
エクセルで1行だけ数式が反映さ...
-
エクセルでフラグがたっている...
-
EXCELで受験票を作成したい(名...
-
エクセルで2つのシートに同じ名...
-
EOMONTH関数の代わり
-
複数シートのセルの 記号の数...
-
エクセル ○印がついている行を...
-
excelマクロで複数シート間のデ...
-
Excelで複数のシートに列のグル...
-
Excel VBA 12ヶ月分のシート作成
おすすめ情報