都道府県穴埋めゲーム

エクセルで仕事用のデータを処理しています。
処理、といっても顧客データです。
よって
「関数バシバシ入れてある」
「マクロプログラムが膨大に含まれている」
と言ったものではありません。
セルに顧客の氏名、住所、メルアド、その他データなどが入っているだけです。
とはいえ、このデータが非常にたくさんあります。
ファイル容量は17MB弱あります。

私の使っているパソコンはOS=Windows10 、エクセルバージョン=Excel2002、メモリ搭載量=8GBです。
まず、この顧客データを開くのが非常に遅いです。40秒くらいかかります。
セーブにも同じぐらい、40秒ぐらいの時間がかかります。
それでも使えないことは無いのですが、いつか
「ファイルがぶっ壊れるんじゃないか?」
という心配をしています。

エクセルの容量を減らしたり、ファイルのロード、セーブの時間を短縮するにはどうしたらいいでしょうか?

質問者からの補足コメント

  • 質問文には「顧客名簿」と記載してあります
    顧客はネット経由でこちら側にアクセスしてきますので、そのたびに
    顧客(見込み客含む)の
    アクセス日時、
    IPアドレス、
    ユーザーエージェント、
    氏名(ニックネームの場合もある)
    メールアドレス
    希望商品名
    などを記録していきます。

    もちろん、
    商品詳細情報を要求してから購入検討するような購買意欲のある客、
    購入意欲の全くない冷やかしの客、
    同業他社が偽名を使って探りを入れてくる偽客
    間違ってアクセスした者
    などいますが、それらも全部記録します。
    また、リピート客であっても、IPアドレス、メルアドなどの遍歴を確認するために、全部、毎回全項目を記録します。

    よって「顧客名簿」よりも「アクセス履歴」と表示した方が
    IT、パソコンに詳しい方にはフィットしたかもしれません。

    とにかく、この情報を記録したエクセルファイルが大きくなってきて困っています

      補足日時:2022/12/22 09:56
  • なお、人様に回答をお願いする身でありながら僭越ではございますが、
    回答される場合は、あまり不適当な文言はおつかいになられませんようにお願いいたします。

      補足日時:2022/12/22 09:58

A 回答 (11件中1~10件)

実験的意味合いで 


ワークシートデータをcsvファイルに変換するvbsを書きましたので
コピーブックで気が向いたら試してみてください

Dim objEXL
Dim f
Dim ws
If WScript.Arguments.Count<1 Then
MsgBox "Bookをアイコンにドロップして下さい"&Chr(10)&"シートごとにcsvファイルを出力します"
WScript.Quit
End If
Set objEXL=CreateObject("Excel.Application")
objEXL.DisplayAlerts=False
For Each f In WScript.Arguments
objEXL.WorkBooks.Open f
For Each ws In objEXL.ActiveWorkBook.Worksheets
If ws.UsedRange.Rows.Count<>1 and ws.UsedRange.Columns.Count<>1 and ws.Cells(1,1)<>"" Then
ws.SaveAs f & "." & ws.Name & ".csv", 6
End If
Next
objEXL.ActiveWorkBook.Close
Next
objEXL.Quit
WScript.Quit

コードをメモ帳にコピペ 任意の名前に拡張子 .vbsを加え
文字コード UTF-16LE で任意の場所(デスクトップ)に保存してください
出来たファイルアイコンにブックをドロップするとブックの各シートをCSV形式でファイル出力します
(A1セルに値がある事が条件になります)

出来たCSVファイルを新規ブックのテキストファイルインポートウィザードでシートへ インポートしてみてください
(インポート前に列の書式設定は忘れずに)
    • good
    • 0

こんばんは #7です


goomania様が既に回答されておりますが、#7他でご質問者様はcsv形式のデータについて触れていないようですので補足いたします

想像の範疇ではありますが
現状:古くから積み重ねたxlsブックを開いて 追加データを手作業で書き込み保存する 様な手順の処理をされているように思います

csvデータの使い方として
①作業をするブック(データは入っていない)(常に新規ブックでも良い)
②作業ブックにcsvファイルのデータを読込
③追加データを手作業で書き込みなどの処理をして
④csvファイルにデータを書き込み(csv形式で保存)
⑤作業をするブックのデータを保存せずに閉じる(問題回避の為BackUp)
(常に新規ブックなら④で保存しているのでそのまま閉じる)

ざっくりメリット
作業用ブックのサイズは大きくなりにくい
csvファイルはテキストなのでサイズはxlsブックより小さく開く処理時間が早い
Excelの破損や不具合からデータを守れる

!常に新規ブックの場合、後に記す書式設定の問題が生じます。
独自の入力支援やマクロなどの自動処理を作業ブックに書き使う事が難しくなります(当然ですね)

懸念
文字コードの問題(文字化け)
数式の場合、解が値になります
Excelの書式により表示形式が変更されてします
データファイルの管理が必要

問題についてはExcelで編集されcsvファイルにするためリスクは低いです
(csvデータ抽出シートの各列で書式設定「日付・通貨・文字列・その他」をあらかじめ設定しておく)

2002の場合テキストファイルインポートウィザードがあったと思います
    • good
    • 0

No.8です。


>はい、ファイルの拡張子は.xlsなのでxls形式のエクセルファイル、ということになると思います。
>当方では顧客からの受信メールの情報を、顧客ファイルに手作業でコピペしています。

という補足説明をいただいたので、CSVデータ利用を阻害するような他のシステムはないことが判りました。

であれば、とりあえず、現状のxls形式データを読込して、一度「CSV形式で保存してみる」という方法を試してみたらいかがでしょうか?

つまり、元データのCSV形式のコピーを作成するイメージです。

元データはxls形式なので、CSV形式で保存しても、保存先の容量に余裕のない場合を除き、元データには何ら影響を与えないと思いますが・・・

CSV形式にすることで、データサイズが小さくなり、読込・保存の時間も短縮できるようであれば、利用する意味があると思います。

但し、CSVデータは、EXCELの「開く」メニューからファイル指定して読込すると「0001」というデータがあった場合、頭の0が飛んで「1」になってしまいます。

あくまでも、テキストファイルの取込みとしてインポートボタンを押し、カンマ区切りデータとして取込みする必要があります。
読込時間短縮にこたわるなら「CSV取込みマクロ」作成してボタン化しておくことも必要かも知れません。

なお、CSVデータにすることで、データサイズの問題、読込保存時間の問題が仮に僅かに改善したとしても、他の回答者さんも指摘されているとおり、セキュリティの課題は残ったままになってしまいます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

改めて当該の顧客名簿ファイル xlsファイルの処理にかかる時間を計測してみました。
xls版
ファイルオープン(ロード) 約1分35秒(95秒)
ファイルクローズ(同時にセーブ) 約0分13秒

上記ファイルにはいくつかシートがあるが、その中で最もデータ量が多く顧客名簿として使っているシートのみをCSV(カンマ区切り型)ファイル化を試行しました

csv版
ファイルオープン(ロード) 約2分28秒(148秒)
ファイルセーブ 約0分10秒

ファイル容量は
xls版 約1.7MB
csv版 約0.63MB

xls版とcsv版を比較すると
ファイルオープンはxls版よりもcsv版の方が1.55倍、時間がかかる
セーブはcsv版の方が約0.77%に時間短縮できた
ファイル容量はcsv版の方が約37%にスリム化できた

これだけ見ると、長短あってどちらが良いとは言い切れないようですね。

お礼日時:2022/12/25 11:13

ご質問の内容で疑問な点が4点あります。



1つ目の疑問は、既に他の回答者さんからも指摘がありましたが、質問にご記載のEXCELのバージョンが正しいとするとWindows10上でEXCEL2002を動かしているいることになります。
以下URLのとおり、この組合せは正常に動作しない可能性があります。何らかの手当をおこなってWindows10上で使用可能な状態にしているということでしょうか?
https://answers.microsoft.com/ja-jp/msoffice/for …
https://mbp-japan.com/saga/pc-pro/column/4010173/

2つ目の疑問は、収録内容がアクセス日時、IPアドレス、ユーザーエージェント、氏名(ニックネームの場合もある)、メールアドレスなどだとすると、このデータを人手で入力して作成しているとはとても思えません。どのようにして作成しているデータなのでしょうか?

3つ目の疑問は
>顧客はネット経由でこちら側にアクセスしてきますので・・・・・
ということは、この顧客データを処理するPCはインターネットに接続されているのでしょうか?

4つ目の疑問は読込、保存を行っているファイル形式についてです。1つ目の疑問のとおり、xlsx形式ファイルは正常に動作しないと考えられるので、xls形式のファイルで読込・保存をおこなっているという理解でよろしいでしょうか?

仮に、ファイル形式がxls形式だとすると、そもそもxlsxファイルには圧縮機能があり、ファイルサイズを小さくできるので、そのメリットが享受できないという点も不利になっています。ただ、Qchan1962さんの回答にもありますが、CSV形式での読込・保存にするという手はあると思います。

アクセス日時、IPアドレス、ユーザーエージェント、氏名(ニックネームの場合もある)、メールアドレス、希望商品名などを記録していて4500行程度で17MBに達しているようです。

これをCSV形式にすればファイル容量を軽減できる可能性があります。項目数、収録文字数にもよりますが、当方の経験で言えば、10項目、57000行程度の顧客データを収録したCSVデータは7MB強でした。

これをWin10(32bit)、CPU2.20GHz、メモリ6GB、EXCEL2010のPCで処理した経験があります。このとき、読込時間は十数秒、保存時間は5秒程度でした。

とはいえ、2つ目の疑問で記載したとおり、何らかのシステムで元データが作成されており、そこに、顧客との接触履歴、商品配送履歴、属性情報等を付加していく方式の場合、元データを作成するシステムを変更しない限り、CSV形式への変更は困難だということになってしまいます。

また、1つ目の疑問で記載したとおり、Windows10とEXCEL2002の組合せはMicrosoftのサポート外ですので、Qchan1962さんも指摘されておられますが、仮に、3つ目の疑問であるインターに接続されているのだとすると、セキュリティの問題もあります。
従って、
(1)読込・保存に想定以上の時間を要する
(2)常に不安があったが、遂にデータに不具合が発生し、読込エラーが出て修復不能になった
(3)セキュリティ上の問題が発生し、顧客データが外部に流出したかも知れない
というような問題が万一発生したとしても、全て「自己責任」ということになってしまうと思います。

決してMicrosoftの回し者ではありませんが、利用環境から再考するという選択肢もあるのではないかと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>以下URLのとおり、この組合せは正常に動作しない可能性があります。何らかの手当をおこなってWindows10上で使用可能な状態にしているということでしょうか?

ご提示のURL先では
「xlsx形式のファイルが扱えない」
旨の事を言っていますが、私のエクセル2002で扱っているファイルは拡張子は
「.xls」
となっています。ファイルのセーブ、ロードは問題なく、関数、その他の計算も問題なく行えます。問題なのは
「17MBのファイルのセーブロードに時間がかかるので、
 やきもきしていること」
です。
というか、私が使っているこのエクセル2002ですが、エクセル2002だけではなくワード、その他のオフィスソフト群(互換ソフトではなく正規のMS社のオフィスソフト群)も、リリース以来、ずっと問題なく使用しております。

>2つ目の疑問は、
(略)
このデータを人手で入力して作成しているとはとても思えません。どのようにして作成しているデータなのでしょうか?

顧客ファイルを作成開始以来、ずっと人力で行っております。毎日の積み重ねが17MBのファイル容量なのです。

>3つ目の疑問は(略)この顧客データを処理するPCはインターネットに接続されているのでしょうか?

はい

>4つ目の疑問は(略)xls形式のファイルで読込・保存をおこなっているという理解でよろしいでしょうか?

はい、ファイルの拡張子は.xlsなのでxls形式のエクセルファイル、ということになると思います。

>とはいえ、2つ目の疑問で記載したとおり、何らかのシステムで元データが作成されており、そこに、顧客との接触履歴、商品配送履歴、属性情報等を付加していく方式の場合、元データを作成するシステムを変更しない限り、CSV形式への変更は困難だということになってしまいます。

えーと
Qネットに接続されていますか?
Aはい、ネットに接続されています。
という質問回答をもってして
常時ネット接続、即ちすべての履歴が自動記録される
という意味ではありません。
もちろん、世の中の99.999%の職場では上記の「常時接続、自動記録」の意味でしょうが、当方では顧客からの受信メールの情報を、顧客ファイルに手作業でコピペしています。
その数年間の集積が「17MB、約4500行のxlsファイル」です。

お礼日時:2022/12/24 16:44

こんにちは



>ファイルのロード、セーブの時間を短縮するにはどうしたらいいでしょうか?

Excelに絞って考えるにデータとして扱うのであればcsvデータにして入出力すれば良いように思います(少しは良くなるのではと・)

余計なお世話かも知れませんが、顧客データ(アクセス履歴)等を
サポートの切れたExcelなどで扱うのはセキュリティーなどの側面からも
見直した方が良いのではないかと思います

Officeを更新した方が良いと言っているわけではありません
昔と違って多くのサービスや特化したソフト、ツールがあり、選択種が増えていますので 検討するタイミングなのではないでしょうか・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

オフィスソフトを最新版にすることについては
検討してみます。

お礼日時:2022/12/24 16:21

面倒かもしれませんが、新規ブックにコピペするのはどうでしょうか。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>面倒かもしれませんが、新規ブックにコピペするのはどうでしょうか。

やったことないけど、それで改善されるのでしょうか?

お礼日時:2022/12/24 16:20

別のPCを使いネット経由でBookを開くと同じ結果なのでしょうか?


例えばExcelが最新版に近いPCで試せるとかで、結果として早ければ2002が合わないのかも?
若しくは2021とかの打ち間違いですかね?

もし2002が正しければ扱えるのは6万行位まででしょうから、2007以降では大丈夫でもこちらではダメって事もあります。
若しくはすでに6万行に近づいているとか。
なのでデータベースソフト導入への変更が必要ではないかと。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>若しくは2021とかの打ち間違いですかね?

打ち間違いではありません。Excel2002版です。
常に最新版をお使いの方からすれば
「2002年版、って今から20年も前だぜ!
 2002年版のエクセルって、関数なんて使えるのか?
 足し算、引き算しか使えないんじゃないの!」
って思われるかもしれませんが、諸般の事情があって2002年版を使っております。

>もし2002が正しければ扱えるのは6万行位まででしょうから、

桁ってのが何を指すのかわかりませんが、もしも
1シート内の行数の上限を指すのであれば、
ご指摘の通り、上限は65536行です
最大カラムはIV(256カラム目)です

データの件数は約4500行分を使っています。
最大行数65535行の10%にも満たないですし、
データシートに載せられる余裕は充分あると思うんですけどね。。。

お礼日時:2022/12/22 14:34

アクセス日時が古いものは別のファイルにする、は良く採られる手法です。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>アクセス日時が古いものは別のファイルにする、は良く採られる手法です

なるほど、そういう方法もありますね。
でも10年前の客からの連絡もあります。
よって
「最近注文の無い客なので、別ファイルにする」
という手法が仕事の進め方に合致しているのかどうかが
判断が難しいところです。

Aファイル「一定期間内にアクセス、注文のあった客データのみで
 顧客検索運用をする」
Bファイル「一定期間、アクセス、注文の無い客のデータは別ファイルにする」

これで、ファイル自体は軽く動かせるとしましょう。
では、昔の客からアクセスがあったとしましょう。
上記のようにファイルを分けてしまうと、結局は2ファイルに対して検索をしなくてはなりません。

これではあまりメリットは感じられませんね・・・

回答者様、あるいはこれを見ている方は
「何が問題があるの? 客からアクセスがあったらAファイルを検索して、データ登録する。
 一定期間(一か月とか一年とか)経過したら、客のアクセス状況や購入頻度に応じて客をA,Bファイルに振り分ける。
 こんな運用、どこだってやっている王道的な運用だよ!」
と思われるかもしれません。

でもこの顧客名簿には客からのアクセス結果だけではなく、こちら側の対応の記録も載っています。
中には
「超ブラック客なので、こちらからの応対は一切するな」
という客もあります。
もちろん、こういう超ブラック客からアクセスがあった場合はそれに応じた対応をします。

こういう運用なので、
「最近、アクセスがない死に客なので別ファイルに・・・」
とすると、
「しまった! 10年音沙汰がなかった超ブラック客に資料送付してしまった!!
 顧客ファイルをAファイル,Bファイルに分離するからこんなことになってしまうのだ!
 責任者、出て来い!」
ってなことになります。

そうなったら困りますよね。
というわけなのです。

お礼日時:2022/12/22 14:47

エクセル管理をやめて、データベースにデータを移行されるのが良いでしょう。

アクセスなどお手軽です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

アクセスですか・・・
ちょっと敷居が高そうですね。

お礼日時:2022/12/22 14:37

17MBは、エクセルとしては小さなサイズですが、40秒もかかるかなあ。

ちょっと謎だけどPCのスペックが低いのでは?ファイルがネットワークに存在してLANのスペックが低いのかも。前者と後者で対応は変わるけど、思いつく対応策を列挙しますか。

1.機種を最新型に変える。
2.HDDをSSDに変える。
3.メモリを16GBに増やす。
4.エクセルのバージョンを最新にする。
5.エクセルをGoogleスプレッドシートまたは軽い互換ソフトに変える。

6.ファイルをローカルに置く。
7.LANを更新する。
8.ファイルサーバーを最新機種に変える。

(36) 【エクセルだけ、は時代遅れ?】ExcelとGoogleスプレッドシートのプロが「違い」や「使い方」をご紹介します。 - YouTube
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
頂いた回答を基にして
いろいろと工夫してみます。

お礼日時:2022/12/22 14:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!