• ベストアンサー

エクセル:外部ファイルからの集計

よろしくお願いします 自動計測端末からフィニッシュした人のデータがcsv(ゼッケンナンバー)形式で記録されてきます。 このcsvデータをエクセルへペーストして、エクセルファイル内の選手データ(ゼッケンと名簿)にチェック(色分けか、消し込み)したいのですが トラブル発生の場合でも、簡単に修正が可能だとありがたいです。 エクセルの選手データーは、ゼッケンと選手名が記載されています。 自動計測のcsvファイルにはゼッケンナンバーが随時記録されてきます。 フィニッシュが完了していない人を抽出したい。 フィニッシュできた人の消し込みか色分けで未フィニッシュ者の抽出をしたいのです。 9月3日に競技があるので、それまでに作成したいのですが、よろしくお願いします。

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

  • ベストアンサー
  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.3

#1です。 小学生から年配者までと言うとさっきの方法はちょっと難しいかもしれませんね。 先ほど記入した関数ですが以下のように変更してください。この方が処理が軽くなります。 =IF(ISNA(VLOOKUP(A1,Sheet2!$A:$A,1,FALSE)),"",1) それと、色分け限定になりますが、 オートフィルタ以降の説明部分(後はsheet1を表示した状態で・・・以降)を下記のようにするとcsvファイルを貼り付けるだけで自動で色分け出来るようになります。 sheet1の列番号"A"と"B"を範囲選択してください。 (Aと書かれた部分でクリックしてボタンを押しっぱなしにしてBまでマウスポインタを移動させます) 次にメニューバーから 「書式」→「条件付き書式」をクリックしてください。 条件付書式の設定が開くので条件(1)の内容を左から 「数式が」「=$C1」 にして下さい。 そして、右の方にある「書式」ボタンを押してください。 セルの書式設定が開くので 「パターン」タグをクリックし表示されたカラーパターンから好きな色を選んでください。 色を選んだら「OK」ボタンを押してセルの書式設定を閉じてください。 続いて条件付き書式の設定画面で「OK」ボタンを押してください。 csvファイルのデータを貼り付けると自動で選んだ色がフィニッシュした人のセルの色になります。 補足要求ですが、 ゼッケン番号がどのようになっているか教えてもらえるでしょうか? ゼッケン番号が「00001」などのように0から始まるとcsvを開いたときに「1」に修正されてしまい正常に判定できなくなる可能性があります。

tri_001
質問者

補足

No1(g_nekoru)さんありがとうございます ゼッケンは4桁で、タイプ別に番号が振られています。例Aタイプ 1001~1234 Bタイプ1500~1600の形式です。(不定期にCSVファイルを書き込む) 1~の形式もあるのですが、頭に0001表記していません。(そうですね。処理を考えておかねば) CSVファイルの更新が追記形式か上書きかまだ分かっていません。 VLOOKUPで指定した場合なのですが、重複してペーストした場合VLOOKUPの範囲内で処理できれば、重複ゼッケンナンバーをペースト処理しても処理できますでしょうか?(CSVデータが更新されるたびVLOOKUPのデータを更新するか領域を増やす方法がよいのか) そうすれば、フィニッシュするたびCSVのペーストを行い残ったゼッケンが行方不明(未計測)となると思うのですが。

その他の回答 (6)

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.7

すいません、前の回答でソートしてと記載していましたが、今回の場合はVLOOKUP機能で一致するものだけを抽出しているのでソートは必要ありません。 VLOOKUP機能の一つに近似値(一致する物がなかった場合対象値以下の最も大きい数値)を抽出すると言うのがあるのですが、その機能を使う場合はソートが必要になります。 VLOOKUP(検査値,範囲,範囲内の列番号,検査条件) 検査条件:TRUE:近似値を抽出する      FALSE:近似値を抽出しない ボタンの作成方法はあっていると思います。

tri_001
質問者

お礼

g_nekoruさん ありがとうございます もう今から追加機能を考える時間もありません 最終選手マスターを作成して 皆さんから教えていただいた関数を使ってみます ありがとうございました

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.6

カウントの関数はいくつかあり COUNT()  ()内の数値の個数を数える COUNTA()  ()内の文字列(数値含)の個数を数える COUNTBLANK() ()内の空白セルの個数を数える COUNTIF(範囲,条件) 範囲で指定した中で条件と一致する個数を数える と言ったところだと思います。 フィニッシュ者をsheet2、リタイヤ者をsheet3として、関数部分を下記のように変更して、 =IF(ISNA(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE)),if(ISNA(VLOOKUP(A2,Sheet3!$A:$A,1,FALSE)),"","リタイヤ"),"おめでとう") =COUNTIF(上記関数を入力した範囲,"おめでとう") =COUNTIF(上記関数を入力した範囲,"リタイヤ") でフィニッシュ者とリタイヤ者の人数を出せると思います。

tri_001
質問者

お礼

g_nekoruさん ありがとうございます 通常のEXCELのHELPだとCOUNTを参照するようですが いろいろあるのですね。 また追記で作成してみます。 テストでトレースしても本番終了まで緊張します。

tri_001
質問者

補足

tri_001さん 再度確認させていただきたいのですが sheet2計測CSV貼り付け側なのですが、貼り付け後にソートすべきでしょうか? ソートが必要であれば、ボタンを作成したほうが楽になると思いまして ボタン作成方法なのですが 新しいマクロの登録 X列ソート 登録終了 フォーム->ボタンでよろしかったでしょうか? 宜しくお願いいたします。

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.5

>","で区切られているはずなので それであればゼッケンナンバーのみ抽出できますね。 >=IF(ISNA(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE)),"","おめでとう") 可能です。 >もし、途中計測があったとした場合の人数カウントなのですが ・・・ 途中チェックとリタイヤの人はどういう形でデータが入ってくるのでしょうか?

tri_001
質問者

お礼

g_nekoruさん たびたびありがとうございます 計測機材に余裕があればデータ取得可能なのです。 形式は同じなので、エクセル側の書式は エントリー人数(スタート前入力) 計測ポイントA 計測ポイントB(折返し) フィニッシュ 総エントリ人数-スタート人数=参加人数 参加人数-ポイントX=通過確認 総エントリー-フィニッシュ人数=総フィニッシュ人数 このようにできれば、ポイントで計測できなかった選手を確認できると思いまして(計測発信器紛失など) リタイヤに関しては、発見時手動入力になると思います。 例 リタイヤを(キャンセル含む)シートに"1"を入力して(ビットを立てる) 集計でリタイヤを外してカウントできれば残りの人数が有効選手になると思うのですが 安易にビットを立てると考えましたが、カウント処理の関数が他にあるのでしょうか? よろしくお願いします。

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.4

#1です。 csvファイルが常にフィニッシュ者全員のデータが入ってくるのであればsheet2のA列データに上書きで貼り付ければ大丈夫です。 上書きで最新のフィニッシュ者のデータしかない場合はsheet2のA列に記入してあるデータは消さずにその下に追加していけば大丈夫です。 ただし、上書き型の場合取り込む前にデータが更新されてしまうと登録されない人が出てきてしまうかと思います。 VLOOKUPの範囲の指定はsheet2のA列全体になっているのでA列に上書き(追加)する分にはVLOOKUP関数を変更する必要はありません。また、csvのデータを重複して入力しても問題ありません。 あと#2さんへの補足としてcsvには発信器ID ゼッケンナンバー 通過時間が含まれているという事なので単純にゼッケンナンバーだけを抽出して張り付けることができません。 csvの正式なファイルレイアウトが必要です。発信機IDの桁数、ゼッケンナンバーの桁数、通過時間の桁数、それぞれの区切り(空白やカンマなど)の有無。 抽出方法を考えてあるのであればよいのですが。

tri_001
質問者

お礼

#1(g_nekoru)さん ありがとうございます いまシートに最終データーをシート2へコピーしました。 これからシート1を作成してみます。 >csvの正式なファイルレイアウトが必要 ","で区切られているはずなので、別途excelでファイルを開いてコピーしようと思っています。 不明点があればHELPします よろしくお願いいたします

tri_001
質問者

補足

#1(g_nekoru)さん 関数 =IF(ISNA(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE)),"",1) で実行してみました。 テストデータ(重複あり)でフィニッシュ者に"1"表記ができました。 シート1のソートで、未計測者がわかるようになりました。 このIF関数ですが任意の文字も可能でしょうか? 例 =IF(ISNA(VLOOKUP(A2,Sheet2!$A:$A,1,FALSE)),"","おめでとう") 質問の中で色分けと消し込みと記述しましたが、フィルタを使えば抽出できるので初心者に伝えられそうです。(簡易マニュアルを作成します) もう一つお願いがあります。 もし、途中計測があったとした場合の人数カウントなのですが 全競技者数(スタート前)-(マイナス)途中チェックとリタイヤ-(マイナス)フィニッシュ者数=途中行方不明者数 と計算できますか? 今回教えていただいた応用で、各ポイント集計、フィニッシュ集計とすればできそうなのですが よろしくお願いいたします

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 本当は、レイアウトがあると助かるのですが。 こちらの想像で、データを作るのには限界がありますから、間違っていたら、ご自身で修正してください。 CSVデータは、貼り付けた場合に、マトリックス(格子形)か、列一つに出てくるか、分りませんが、汎用性を考えてマトリックスにします。(#1の方は、列一つですね。) Sheet2のA1:D10 とします。 (A1:A40 でも、やり方は同じです。) Sheet1のA列をゼッケン番号,B列を選手名 Sheet2!A1:A10 35   4  30   9   13   1  21   3   34  40  28  17  7   25  18  20   33  12  27  15   23  10  32  11   24  39   8   2   22   5  19  26   29  16  38  36   37   6  31  14   この範囲を、挿入-名前-定義 名前 HANI (任意) 参照範囲 =Sheet2!$A$1:$D$10 Sheet1のA列をゼッケン番号,B列を選手名とします。 Sheet1のA1にセルポインターを置き 書式-条件付書式- 「数式が」 「=COUNTIF(HANI,$A1)」 書式-パターン-色づけ    (またはフォント) [白なら消しこみになります] OK-OK で、後は、A1にセルポインターを置いたまま書式コピー(ほうきのツールアイコンをクリック)で、A1から、選手のゼッケン番号が入っている場所すべてを選択。 -または、A1をコピー-範囲を選択して、マウス右クリック-形式を選択してコピー、書式(T) なお、その範囲を、B列に書式コピーすれば、B列も色が付きます。

tri_001
質問者

お礼

No2(Wendy02)さん回答ありがとうございます データ形式は、 CSV 発信器ID ゼッケンナンバー 通過時間 12345 123 13:45:00 エクセル側は選手マスターですので、氏名、ゼッケンなどとなります。 No1さんNo2さんの式を入れて、テストしてみます。 ボランティアが重要な計測業務を行っているので(しかもいろいろなオペレーターが運用)、困っています。 状況によっては、計測業者の発信器が装着されないでフィニッシュする可能性もありますし(目視確認も必要)発生しそうな問題が山積みです。 なんとか、行方不明(フィニッシュ計測)を防止したいので・・・ 宜しくお願いします。

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.1

エクセルの選手データがシート名:sheet1にありゼッケンナンバーがA列、選手名がB列にあるとします。 データはゼッケンナンバーで昇順にソートしておいてください。 csvファイルを開きデータを選手データのあるブックのシート名:sheet2のA列に貼り付けます。 csvファイルに変更があった場合は張り直してください。 張るたびにゼッケンナンバーで昇順にソートしてください。 sheet1のセルC1に =IF(ISNA(VLOOKUP(A1,Sheet2!$A:$A,1,FALSE)),"",VLOOKUP(A1,Sheet2!$A:$A,1,FALSE)) と入力してデータの数だけコピーしてください。 入力後C1セルをアクティブにしてセルの右下にマウスポインタを合わせるとポインタが「+」に変わるのでその状態でダブルクリックするとコピーできます。 後はsheet1を表示した状態で メニューバーから「データ」→「フィルタ」→「オートフィルタ」をクリックしてください。 セルA1~C1の右側に下向き三角のボタンが表示されると思うのでC1のボタンをクリックして「空白セル」をクリックしてください。 それで、フィニッシュした人は表示されなります。 csvデータを追加したらもう一度「空白セル」を選びなおしてください。 色分けしたい場合は「空白以外のセル」をクリックし表示されている選手全てを選択し色をつけて「すべて」をクリックすれば色分けできます。

tri_001
質問者

お礼

早速の回答ありがとうございます テストデータを作成してやってみます 簡略化をお願いしている理由が当日ボランティアが交代で運用するため(年齢層が広範囲 小中学生から年配者まで)です。 リタイヤは随時更新して、フィニッシュ時の計測データ(CSV)をペーストして未完走者を抽出したいのです。 予算の都合上選手フィニッシュ計測データしか取得できません。 No1(g_nekoru)の方式で抽出テストをさせていただきます。もし、他の方法がありましたら、宜しくお願いいたします。

関連するQ&A

  • テキストファイルをエクセルに取り込みたい

    大量のテキストファイルから必要なデータを抽出し、エクセルに貼り付けたいのですが、何か良いフリーソフトを御存知でしたら紹介して下さい。 ○テキストからデータを抽出(抽出キーワード30個程度) ○抽出したデータをcsvに適したように自由にカンマで区切る ○抽出されたデータをcsvまたはxls方式で書き出し 以上の機能がほしいのです。 よろしくお願いします。

  • エクセル マクロでのエクセルファイル取込について

    エクセルで別のエクセルファイルをマクロで取込み、取込したデータを自動で任意の場所にデータが入力されるようなものを作りたいと考えています。 csvデータの取込は作ることが出来たのですが、エクセルファイルをcsvデータのように取込することは出来ないでしょうか? 出来ないとしたら、取込したいエクセルファイルを一度csvで保存してからcsvとして取込するというやり方で対応するしかないでしょうか? 出来れば、取込したいエクセルファイルのシートが複数にわかれていて、全シートの情報を取込したいと考えているので、エクセルのままで全シート取り込めれば・・と思います。 何か上記の方法でなくとも、最善の方法(一番工数が少なく済む方法)があれば教えていただきたいです。 よろしくお願いします。

  • エクセルでファイルの一活検索

    ○ エクセルを使用しています。 ○ CSV方式で保存しているデータ(ファイル名は「20010101.CSV」と月別に保存しています。)があります。 ○ この各データの欲しい部分だけを抽出したいのですが、1ファイルごとであれば出来るのですが、一度に行う方法がありましたら教えて下さい。 ○ 関数ならある程度、使用(理解)出来ますが、VBA等は無知に等しい質問者です。

  • エクセルのデータから別のエクセルのデータを引く

    エクセルのcsvファイルが2つあります。 一つのcsvファイルのデータから、もう一つのcsvファイルのデータを引きたいのですが、方法を伝授していただけますでしょうか。 詳しく言いますと、一つのcsvにはニックネームが200件あり、もう一つのcsvにはニックネームが150件あります。 「200-150=50」 2つのcsvにカブっていないデータを抽出したいのです。 Microsoft Excel 2003を使用しています。 よろしくお願いします。

  • エクセルでcsvデータを自動読み込みする方法(至急)

    csv形式のファイル(内容は計測値データ)をエクセルに読み込み、csvファイルの各データが規定値内に納まっているかの確認が容易できる方法を探しています。 このとき条件として、 (1)csvファイル内のデータは10項目程度。 (2)csvデータはランダムに更新される。 (3)エクセルに読み込むときはエクセルシート内の決められたセルにそれぞれデータが格納されること。 (例)csvファイルに"110"と"119"の2種類のデータがあった場合、あらかじめxlsファイルのセルA1に「警察」、セルA2に「消防署」と記入しておき、csvファイルのデータを読み込んだとき、セルB1に"110"、セルB2に"119"と入力される。 (4)csvファイル自体は開かず、必要なときにあらかじめ作成したxlsファイルを立ち上げると、自動でcsvファイルの内容を吸い上げる。 (5)入力されたデータの適否をそれぞれ判定する。 (6)xlsファイルを立ち上げている間にcsvファイルが更新された場合、xlsファイルの更新方法は手動と自動を選択できる。 こんなこと出来るでしょうか? 特に(4)が困っています。csvファイルをエクセルで開いた状態であれば、この内容で出来たのですが・・・。 どなたか良い方法があったら教えて下さい。お願いします。

  • Excelでファイル全体が読み込めないときどうすればいいでしょうか?

    計測データーをcsv形式で保存し、エクセルに保存しなおし加工しているのですが、データー量が多く、全てのデーターがエクセル上では表示されないとエラーが出るのです。 どうしても必要なデーターで再計測が出来ないので困っています。 こういった場合どうすればいいでしょうか? 説明が不足していて分かりにくいと思いますが、エクセルでグラフ表示などをしたいので、どうしてもエクセルで表示したいのです。 BOOKはいくつに分かれてもかまいません。 確実にデーターを表示させる方法があれば教えてください よろしくお願いします

  • EXCELでCSVファイルの読込み

    VBA超初心者でとても困っています。 仕事でEXCELのVBAを使って 現在開いているシートの中に 1つのCSVファイルからデータを読み込むのですが CSVデータの2行目をEXCELのC2へ。 4~10行目までを、EXCELのB5~B14へ マクロを使い、ボタン一つで自動入力させたいのです・・・。 Line Input も、やり方が悪いのかうまくいきません。 ヒントとなるやり方があればぜひ教えてください。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • EXCELのマクロで外部データの取り込み

    CSVファイルを「外部データの取り込み」でシートに読み込むマクロを自動記録で作成したのですが取り込むファイル名が毎回違うのでそのマクロを使うことができません。そこでファイルリストのダイアログからパスとファイル名を指定して実行できる様にしたいのです。良い方法が有りましたらご伝授をお願いします。 ちなみにCSVファイルはネットワークドライブ上にあります。

  • Excelの集計技を教えて!

    Excel2002で施設の利用者を日毎で記録しています。 今上司から1ヵ月間に3回以上利用する人の割合を出せ!と命を受けました。 Excelで記録があるからと思って軽く引き受けたものの抽出する方法が分からないのです。 恥ずかしながらお力添えをお願いします。 手作業も考えたのですがなんとも延べ4千名程の名簿なので今後の事も考えExcelでしたいです。 何卒よろしくm(__)m

専門家に質問してみよう