• ベストアンサー

EXCELLの動きが遅い

wata-yottiの回答

  • ベストアンサー
回答No.3

より大きなデータのファイルがスムーズに動くということであれば、ファイルが壊れかけている可能性があります。ファイルが壊れかけている場合、データ検索で一部エラーになったり、アプリケーションエラーが出たり、処理速度が遅いということがあります。 次の方法で新しいEXCELファイルにデータのみ移行して、同様の処理をしてみてください。 1.動きの遅いExcelファイルにて「全セル選択ボタン」をクリックし、全てのセルを選択し、メニュー「編集」-「コピー」をクリックする。  *「全セル選択ボタン」はシートの左上(列Aの左で行1の上)の何も書いていない灰色の所です。 2.メニュー「ファイル」から「新規作成」をクリックし、「ブック」を選び「OK」ボタンをクリックする。 3.新しいBOOKでメニュー「編集」-「形式を選択して貼り付け」をクリックし、貼り付けの「値」のボタンをクリックし、「OK」ボタンをクリックする。 4.関数などをしようしていた列は関数を設定しなおす。 以上です。関数などを多様していた場合、再設定は大変かもしれませんが、私はこの方法でEXCELファイルを復旧したことが何度かあります。

macbain
質問者

お礼

 ありがとうございます。嘘のように見事に動くようになりました。  今までもファイルによって動作が遅い、という経験は何度かありました。ファイルが壊れかけているわけですね。今後同様の現象があれば大急ぎで今回教えていただいた処理を実行します。場合によってはデータそのものを失いかけていたわけですね。くわばらくわばら(^_^;

関連するQ&A

  • EXCELLのズーム表示設定

    EXCELL(EXCELL 2002 SP-2)のファイル全てをある特定のズーム倍率で表示させたいのですが、どうやったらよいのでしょうか? デフォルトでは100%になっていて、現在シートごとに倍率を直している状況です。

  • Excellでファイルを開いたらSheet名が表示されない

    Excellで日常使用しているファイルを開いたら、いつも下部に表示されるSheet名が表示されません。画面下に隠れているかとおもい画面表示を縮小してみましたが同じです。また 新規にウィンドウを開くとちゃんと表示されています。どうしたらなおりますか?

  • エクセルで100個のブック形式のものがあります。行数はおのおの違います

    エクセルで100個のブック形式のものがあります。行数はおのおの違いますが、列数は同じです。 ファイルを1つのシートにつなげるにはどうすれば早くできるでしょうか。

  • マクロでマスタ表からフィルタ表と同じデータ抽出

    仕事で不定期ですが月に4~5回マスタ表が届きます。 その表から私の担当している部品のみ抽出するフィルタ表があり 素人ながら簡単な録画マクロで処理を行っています。 (マスタ表から抽出フィルタを使いフィルタオプションで抽出して新しいシートに出力) 但し、毎回マスタ表の最終セルの座標をマクロの編集で記載してから実行しており何とか自動で最終セルを認識してくれないかと色々調べましたが思うように動いてくれません。 マスタ表は毎データ行数列数はバラバラですが部品番号などの位置はフォーマットとして共通です。約18000行で列は8行~23行 抽出用の担当フィルタは私が担当している部品で約500点ほどで不定期メンテナンスしており増減します。 本来であれば現在のマクロのソースを記載したいのですが会社にファイルがあるので一旦書き込みだけいたします。

  • エクセル:文字列間の行を抽出

    エクセルファイルで1つのシートに複数の表がひたすら縦に並んでいます。それぞれの表が別々のシートに記載されるようにしたいと思っています。 どの表も基本的な書式は同じなので列数は同じなのですが、行数は表ごとに異なります。 また各表の右下(C列)にTotalという文字列が必ずあります。 文字列Totalがある行の直下の行から次のTotalのある行まで抽出して、シートを作成できれば良いのだと思うのですが、どうすれば可能になるのか分かりません。 どなたか教えていただけ無いでしょうか。

  • Excelで、列数が違う2つの表を上下に表示させるには?

    Excelで作成した、それぞれ行数、列数が違う2つの表があります。 同じシート上に、上下に表示させたいのですが、列数が違うため、貼り付けると、 その貼り付けた方の行幅が上の表の行幅になってしまうため、壊れてしまいます。 壊れないように2つの表を表示したいのですが、どのようにしたら良いでしょうか? 上の表の列数を増やし、増やした分の線を消し、セルを結合すればできるとは思いますが、 このやり方だと、かなり時間がかかってしまいます。 簡単にできる方法はありますか?

  • excelのVBAを利用し検索抽出を行う方法

    検索というよりデータの抽出の方が正しいかもしれません。 現在、顧客情報を種類別でシートに分けて表で管理しています。 情報には名前などの文字列、日付、時間などが含まれます。 この表の形式を説明すると、 ・列 … B~AI まで項目があります。(A列は使用していません) ・行 … 1行で1つのデータとなります。 ・行数…シートにより行数は異なります。 この形式の表が全部で14シートあります。 このシートのB列に「未・済」のステータスがあるのですが、 すべてのシートの「未」である行のデータを"Sheet1"に抽出させたいと考えています。 さらに、抽出されたデータの"D"列の日付にソートされるようにしたいのですが、 説明がわかりづらかったら申し訳ありません。 VBA初心者のためご教授いただければと思います。 よろしくお願いします。

  • VBAにて、複数シートからデータを抽出

    エクセルVBAです。複数のシートからの集計、抽出の書き方について教えてください。 1つのファイルに50ほどのシートがあります。 各シートの列数やフォーマットは、同じですが行数は、異なります。 例 sheet1(シート名:集計):集計用   A    B    C       D     1 ※検索キーワードを入れるセルや 2   マクロを登録するボタン用として2行開けてある。 3 番号 氏名  郵便番号  住所  sheet2(シート名:STU)   A    B    C       D      1 番号 氏名  郵便番号  住所  2  1  AB   345    YZ 3  1  CD   678    QS sheet3(シート名:XYZ)   A    B    C       D      1 番号 氏名  郵便番号  住所  2  2  AB   345    YZ 3  2  CD   678    QS 4  3  CD   678    QZ 抽出前は、上記の様なファイルとなっております。 上記では、4列としてますが実際は、23列あります。 また、sheet3までですが、実際は、40~100シート位あります。 sheet1(シート名:集計):集計用   A    B    C       D     1     ※検索キーワード:氏名_CD としマクロを実行する  2       (↑例として氏名でフィルタリングしてますが他の指定項目でも実行したい、複数条件は、無)   3 番号 氏名  郵便番号  住所 4  1  CD   678    QS    (←sheet2(シート名:STU)の3列目) 5  2  CD   678    QS  (←sheet3(シート名:XYZ)の3列目) 6  3  CD   678    QZ  (←sheet3(シート名:XYZ)の4列目) ・  ・  CD    ・      ・ (←sheet4(シート名:・・・)の・列目) ・  ・  CD    ・      ・ (←sheet10(シート名:・・・)の・列目) ・ ・  CD    ・      ・ (←sheet27(シート名:・・・)の・列目) ・  ・  CD    ・      ・ (←sheet27(シート名:・・・)の・列目) ・ ・  CD    ・      ・ (←sheet30(シート名:・・・)の・列目) 上記の様にすべてのシートから氏名:CDでフィルタリングし集計シートに抽出したい。 よろしくお願いいたします。

  • 金額欄の計算結果が500以上となる行のデータを抜出して他のシートにコピーするマクロ

    Sheet1 のA5セルから始まって、 月日、項目、数量、単価、金額(円)、備考  からなる表があります(上4行は空欄)。 E6の金額欄は「 =数量*単価 ( =C6*D6 )」の数式で示され、列方向に数十行ソートされて各行の金額が計算されています。他の欄のデータは手入力で埋められています。 この表の中から、金額欄が500円以上となる行だけを全て抜出して、Sheet2 のA3セルを起点に表示させるマクロを作りたいと思っています。 なお、データの行数は日にちとともに増えてゆきます。 「新しいマクロの記録」を使って工夫しようと思いましたが、【1】オートフィルタでは、他のSheetへの抽出が難しいようです。 また、【2】フィルタオプションの設定では、(1)検索条件範囲はSheet2を選択した状態で指定するものでしょうか? (2)金額欄が1000円以上であることの条件は、具体的にどのように指定すれば良いのか要領が分かりません。 (3)実際にフィルタリングさせてみると、見出し行だけがSheet2にコピーされ、肝心のデータ領域は選ばれないので困っています。 新しいマクロの記録を使わない、よりすっきりした方法を教えていただければその方ありがたいです。 フィルタオプションの使い方についても今後の参考として教えていただけるとたいへんありがたいのですが。よろしくお願いします。

  • 表を新しいブックに保存

    Sub 表を新しいブックに保存反映日ごと() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Do While Range("A2") <> "" Range("A1").Select '一番上の発売日の範囲を取得 Range("A2").Select Dim 列 As Long Dim i As Long 列 = 1 '列数を取得 Do While Cells(1, 列) <> "" 列 = 列 + 1 Loop 列 = 列 - 1 '発売日ごとのデータ量を取得 i = 2 Do Until Cells(i, 1) <> Range("A2").Value i = i + 1 Loop i = i - 1 '発売日のまとまりのデータ範囲を選択 Range(Cells(1, 2), Cells(i, 列)).Select '発売日ごとのデータをコピー Selection.Copy '発売日を取得 Dim 発売日 As Long 発売日 = Range("A2").Value '新しいブックを追加してシート名を発売日に設定 Workbooks.Add ActiveSheet.Name = 発売日 新ファイル名 = ActiveSheet.Name Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & "メンテ_" & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select '保存された発売日分のデータを削除 Range(Cells(2, 1), Cells(i, 列)).Select Selection.Delete Shift:=xlUp Loop '不要になった表転記用ブックを閉じる Application.DisplayAlerts = False ActiveWindow.Close Application.DisplayAlerts = True Range("A1").Select Application.ScreenUpdating = True End Sub Sub 表を新しいブックに保存() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, Password:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select Application.ScreenUpdating = True End Sub