
ウィンドウズxp で オフィス2000を使っています。エクセルでひとつのセルの中に、沢山の文字を入力しているのですが、文字数が増えると同時にとても遅くなります。文字入力自体も遅いですし、変換も遅いです。まるで、腹話術の時差のようです。
多いといってもそこまでではありません。せいぜい500文字から1000文字程度です。同じセルの中で何度も改行はしますが。
こうも遅いと仕事をする上でパフォーマンスが悪くて困っています。
ひとつのセルで沢山の文字を入力し、そして改行も行うとして、この以上に遅くなる現象を解決できる方法ってあるのでしょうか?
以上よろしくお願いいたします。
No.17ベストアンサー
- 回答日時:
テキストボックス等はユーザーフォーム上に作成してください。
保存はエクセルファイルを保存することになりますが、さしあたり保存しなくても動作すると思います。
エラーが出たときにデバッグ画面が表示されると思うのですが、黄色くなっていたり反転表示されている部分を教えていただけませんか?
コード中の入力フォーム、OK、Cancel、TextBoxなどは、オブジェクト名(プロパティウィンドウの一番上)と一致していないと動作しません。
あと、フォームのコードを一部変更しました。
Option Explicit
Private Sub UserForm_Initialize()
TextBox.Value = ActiveCell.Value
End Sub
Private Sub OK_Click()
ActiveCell.Value = TextBox.Value
Unload Me
End Sub
Private Sub Cancel_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ActiveCell.Offset(1).Select
End Sub
この回答への補足
ありがとう御座います。
なんとかクリックすると入力フォームが出てくるようになりました。しかし全てのセルに同じ現象が起きてしまいました。
必要とするのは顧客とのやり取りをする2~3列のみです。
他のセルには、この入力フォームが出てきてしまうと、運用しずらくて
使えません。
指定した列だけを使えるようにしたいです
またこの入力フォームでは、セルの中の指定した範囲の文字のフォントの色を変えたり、太字にしたりできません。
これも業務上必要ですで出来るように出来ますか?
No.22
- 回答日時:
>日々の運用上、別のブックにコピーペーストを行うという
>運用の仕方は現実的には無理ですので、せっかく提案いただきましたがちょっと難しいですね。
説明不足でした。
更新の都度コピー&ペーストするのではなく、1度やるとしばらくはやらなくてよいと思います。
何回も更新を繰り返すと、ファイル容量が必要以上に大きくなるようです。
自分のPCはWindowsXp Excel2000ですが、
120回くらい更新をしたファイルがありましたので、これを新しいファイルにコピーしてみました。その結果 196KBが164KBに減少しました。
注、他のワークシートを参照している場合、元のファイルのワークシートを参照するんで、参照式を変更する必要があります。
No.21
- 回答日時:
>なんとかクリックすると入力フォームが出てくるようになりました。
しかし全てのセルに同じ現象が起きてしまいました。ANo.16にて、以下のコードはダブルクリックした行が15行目か16行目の場合にフォームを表示するというものです。全てのセルで表示されるということですので、この行がうまく機能していないようです。
If Target.Column = 15 Or Target.Column = 16 Then
入力フォーム.Show
End If
>またこの入力フォームでは、セルの中の指定した範囲の文字のフォントの色を変えたり、太字にしたりできません。
書式を変更するとなると、ちょっと厳しいですね・・・。方法はあると思うのですが、お伝えする自信がありません。
質問です。
2列用意しているとのことでしたが、2列目が腹話術現象を起こすほど大量に入力されることはありますか?また、もし2列目が一杯になる場合はどう対処しますか?
もし2列目が腹話術現象を起こさない程度であれば、1列目が一杯になるまではAN0.12のような方法で追記し、2列目は普通に入力するといった手段が考えられるのですが・・・。
No.20
- 回答日時:
腹話術の時差現象は資源の無駄使いが原因だと思いますので色々試していただいたのですがどれも効果がなく、貴重な時間無駄にされたようで申し訳ありません。
ご迷惑ついでに次のような2つの提案をさせていただきます。
1・BOOKを新規作成して、ここへ有効なセルだけをコピー&ペーストして、保存。これで新旧のファイルサイズに大きな差異(2倍以上)があれば解決です
複数のワークシートのときはワークシート名を旧のものと同じにしてから、
参照されるシートからコピー&ペーストです
2・別のサイトですが、参考URLに詳しくありました。
何がどう効くのかわかりませんがANo.4(20pt獲得)も参考になりますか
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=609660
この回答への補足
ありがとうございます。
日々の運用上、別のブックにコピーペーストを行うという
運用の仕方は現実的には無理ですので、せっかく提案いただきましたがちょっと難しいですね。
No.19
- 回答日時:
30列もあり、マクロまで組み込んでいる事情があるのでしょう
仕組みの変更は大変ですね、今回はこのまま行くとして
オートフィルターは大変便利なものです。次の方法で体験してみて下さい。
今後の仕組みづくりに使いたくなりますよ
データが50行まで入力されているとして
1.BOOKにSheetを追加して、sheet1のセルA1~C51までをSheet2に3回貼り付けてます
これで153行の表ができますね、途中に入った見出し行を削除して、151行の表にします
2.セルD1にアポ状況と入力、セルD2にアポ情報1と入力
3.セルD2をクリックして、D2の右下にマウスカーソルを移動するとマウス記号が白十字から単なる+に変わります。この状態でマウスの左を押下、下のセルへドラッグするとアポ情報2、アポ情報3…と変化していきます。アポ情報150まで来て準備完了です。
4.セルB5くらいをクリックして、ツールバーのデータからフィルタに入ってオートフィルタをクリックします。
これでオートフィルタの設定完成です。
A列の▼をクリックして下さい。
いかがですか
この回答への補足
ありがとう御座います。
このオートフィルタは私の抱えている
解決すべき一つのセルに沢山の文字を記入する際の
パフォーマンス低下の改善案という事ですか?
私もオートフィルターという名称についてはあいまいでしたが
もともとこのテレアポシートにはオートフィルタが
設定してあります。すみません言うのが遅くて
それは、4行目に 企業名、住所 郵便番号 担当者名 電話番号
顧客アプローチステータス 顧客カテゴリー 等々で オートフィルターでソートできるようになっています。
以上よろしくお願いします。
No.18
- 回答日時:
メモリ管理ソフトは試してもらいましたか
ディスクのクリーンアップはご存知ですね、RAMメモリーにも必要です。
どうしてこの機能がWindowsXpに入っていないのか不思議です。
「メモリーの掃除屋さん」のURLを参照URLに入れておきます。
ここをクリックして、インストールしてください。
数回のクリックでのフォルダーがデスクトップ上に作成されますので、この中の「MemClCmd.exe」を実行してください。
きっと腹話術時差は解消すると思います。
参考URL:http://www.vector.co.jp/soft/win95/hardware/se19 …
No.16
- 回答日時:
まず、シートのタブを右クリック→コードの表示をクリックします。
以下のコードを記述します。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 15 Or Target.Column = 16 Then
入力フォーム.Show
End If
End Sub
次に、メニューバーから挿入→ユーザーフォームを選択します。
メニューバーの表示から、ツールボックスとプロパティウィンドウを表示させます(すでに表示されている場合は無視してください)。
ツールボックスから、テキストボックスひとつとコマンドボタン二つを作成します(場所、サイズは任意)。
UserForm1、TextBox1、CommandButton1、CommandButton2の4つが作成されたので、プロパティウィンドウにてオブジェクト名とCaptionをそれぞれ変更します(ここでは順に入力フォーム、TextBox、OK、Cancelとしておきます)。また、TextBoxのMultilineをTrueに、ScrollBarsを3にしておきます。
メニューバーから表示→コードを選択して、以下のコードを記述します。
Option Explicit
Private Text0 As String
Private Sub Cancel_Click()
Unload Me
End Sub
Private Sub OK_Click()
ActiveCell.Value = TextBox.Value
Unload Me
End Sub
Private Sub UserForm_Initialize()
Text0 = ActiveCell.Value
TextBox.Value = Text0
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ActiveCell.Offset(1).Select
End Sub
たぶんちゃんと動くと思うのですが・・・。分からない、動かないとかありましたら補足願います。ユーザーフォームについては検索すればいろいろヒットすると思います。
この回答への補足
有難う御座います。
上記の操作やってみましたが今までやった事のない操作なので
これで有っているのかすらよくわかりません。
ツールボックスから、テキストボックスひとつとコマンドボタン二つを作成します(場所、サイズは任意)と有りますがこれを作成する場所はユーザーフォーム上に作成するのでしょうか?
そして全てのコード等の記述が終わった段階で、最後はどのように終了するのでしょうか?ファイル→シートの上書き保存でしょうか?
一応そのようにしてみましたがエクセル上に何も変化はないようでした。
なにがどう間違っているのでしょうか
すみません。言われたとおりにやったところ、コンパイルエラー 変数が定義されていませんとでてしまうようになってしまいました。どうしたらいいでしょう?
No.15
- 回答日時:
オートフィルタは例えば特定の顧客名のみの行を抽出して表示してくれます。
この機能によりアポシートにはアポの都度行を追加できます。オートフィルターのかけ方は、参照URLの入門初級編の初級11を見てください
アポシートは顧客シートの左端に日付とアポ内容を追加したものです。
参照式は顧客名をキーにして顧客情報を表示するためです。
D2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,2,1))
E2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,3,1))
F2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,4,1))
上記式をご覧下さい一箇所だけ変化しています 列番号です。
この参照式を有効にするためには、顧客名が昇順に並んでいなければなりません。
分類アイコンはツールバー上にありますね、顧客名の一つをクリックしてから昇順をクリック
日付は Ctrl+; で今日の日付が入力できます
顧客名は入力セルで右クリックからリストから選択で少しは楽?
さて本来の目的ですが、ディスクのクリーンアップはご存知ですね、RAMにもこれが必要です。
「メモリーの掃除屋さん」がしてくれます
http://www.vector.co.jp/soft/win95/hardware/se19 …
自動解凍ですのでクリックで答えていくだけでデスクトップにセットしてくれます。メモリーの掃除屋さんのフォルダー内のMemClCmd.exe実行してこのままデータ入力を続けてください。
尚オートフィルタ機能は空白行,空白列があった時はその場所でコントロールは切れます。
参考URL:http://www.kenzo30.com/excel_kiso.htm
この回答への補足
ごめんなさい
ちょっと私にはむずかしすぎます。
ただし、上記のオートフィルタに関して言うと、
ひとつの顧客に対して複数の行を用意するための物ですよね?
私としては、あくまで1顧客につき一行で完結させることを前提としています。
ですので、追加の記述は同一セルの中に改行して追記して行く形となります。これは譲れない部分です。
そしてそのセルがブラウザの画面いっぱいになったら右となりの列のセルに続きの内容を記入していくと形です。
そのやり方で、パフォーマンスが腹話術時差のようにならない方法を
探しています。
No.14
- 回答日時:
目的が分かりました。
これならExcelのデータ処理機能を利用すると
任意顧客の抽出 分類、日付別抽出分類が可能となりますし
詳細は次の通りです
テレアポ進捗管理
ワークシートを顧客情報を登録しておく顧客シートと
日常のアポを登録するアポシートの2つ用意します。
何れのシートも1行目は項目名とし、2行目以降がデータ行
・顧客シート
A1:企業名 B1:住所 C1:電話番号 D1:担当者名
仮に顧客数が50とすると、2行目から51行目までがデータ行になります。
・アポシート :顧客シートの項目に日付とアポ内容の2項目を加えて
A1:日付 B1:アポ内容 C1:企業名 D1住所 E1:電話番号 F1:担当者名
セルA1~C1は入力項目ですが、セルD1~F1顧客シートを参照します。
セルD2~F2の参照式は次の通りです。
D2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,2,1))
E2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,3,1))
F2=IF($C2="","",VLOOKUP($C2,顧客シート!$A$2:$D$51,4,1))
これらの参照式をD3から適当な行(例えばD1500)までコピー
アポシートに数件情報が入った時点でオートフィルタをかけます。
顧客シートは追加登録の都度 顧客名の昇順に分類してください
追記:データ機能は空白行または空白列が入ると機能しません(空白セルは可)
この回答への補足
アポシートに数件情報が入った時点でオートフィルタをかけます。
・・・オートフィルタって何ですか?アポシートに情報が入った段階でその処理をすることで顧客シートとどうなるんですか?
顧客シートは追加登録の都度 顧客名の昇順に分類してください
・・・顧客シートには、顧客が増える都度A~Dまで手入力するとしてアポシートにも手入力しなければなりませんよね?A,B,Cは。理由はD~Fと違って顧客シートを参照していませんし。
ちなみに本来の目的はアポ内容をセルに記入するときにパフォーマンス低下することの改善方法を探しているのですが、上記のD~Fの顧客シートを参照し、アポシートには従来どおり、ひとつのセルに沢山の文字を入力していくという事に変わりわないと思いますがパフォーマンスが改善されるという事でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/01/06 08:39
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- Excel(エクセル) Excelの1つのセルにそれぞれ文字+数字が入力されていて、 数字のみ抽出して合計したいです。(合計 4 2023/03/16 23:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセルのdatedif関数を使って...
-
【画像あり】オートフィルター...
-
【マクロ】アクティブセルの時...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】実行時エラー '424':...
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報