Page 278 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼書式置換について endo 02/10/29(火) 19:30 ┗Re:書式置換について りん 02/10/29(火) 20:48 ┗Re:書式置換について endo 02/10/30(水) 1:13 ┗Re:書式置換について りん 02/10/30(水) 8:21 ┗Re:書式置換について endo 02/10/30(水) 9:18 ┗Re:書式置換について りん 02/10/31(木) 8:40 ┗Re:書式置換について endo 02/10/31(木) 10:41 ─────────────────────────────────────── ■題名 : 書式置換について ■名前 : endo ■日付 : 02/10/29(火) 19:30 -------------------------------------------------------------------------
初めて投稿します。よろしくお願いします。 データが記号(○、□、☆等)で、その記号によって、書式のパターンを 変えたいのですが、データ数が30000万件もあり、VBAで作成した マクロでは、時間がかかりすぎています。 作成したマクロは、rowとcolumnをそれぞれforでループし、一つずつ検索 していくという単純なものです。時間にして4分程度かかっています。 以上、どなたか知っている方がいらっしゃれば教えてください。 よろしくお願いします。 環境:Excel2000 OS:Windows2000 |
endoさん、こんばんわ。 > 変えたいのですが、データ数が30000万件もあり、VBAで作成した 3億件? > マクロでは、時間がかかりすぎています。 やりたいことと、現在の状況がわからないので、どんなコードか差しさわりのない程度に教えてください。 |
▼りん さん レス有難うございます。 そして、返信送れて申し訳ありません。 >> 変えたいのですが、データ数が30000万件もあり、VBAで作成した > 3億件? すいません。3万件です。 > やりたいことと、現在の状況がわからないので、どんなコードか差しさわりのない程度に教えてください。 ○○××○□□というデータがあったとしたら、○を背景を赤、×を青という風に 書式設定のパターンを設定したいのです。 赤赤青青赤黄黄 (例) コード(現在) Dim i as integer Dim j as integer for i = 0 to 30000 for j = 0 to 111 if(cells(i,j).value = "○") then cells(i,j).Interior.ColorIndex = 5 ・ ・ next next 上記のように、セルを1つずつチェックしていき書式を設定するという処理 を行っているのが現状です。 よろしくお願いします。 |
endo さん、おはようございます。 > ○○××○□□ > 赤赤青青赤黄黄 (例) 各セルにマークがひとつずつ入っていて、パターンが3つ(この場合は○△□)しかないのならば、わざわざマクロを組まなくても条件付き書式で簡単に対応できますよ。 適用範囲を選択してから、 書式 → 条件付き書式で 条件1:セルの値が ○ パターンを赤 条件2:セルの値が × パターンを青 条件3:セルの値が □ パターンを黄 とするだけです。 |
りん さん おはようございます。 > 各セルにマークがひとつずつ入っていて、パターンが3つ(この場合は○△□)しかないのならば、わざわざマクロを組まなくても条件付き書式で簡単に対応できますよ。 > >適用範囲を選択してから、 書式 → 条件付き書式で > > 条件1:セルの値が ○ パターンを赤 > 条件2:セルの値が × パターンを青 > 条件3:セルの値が □ パターンを黄 > >とするだけです。 レスありがとうございます。説明では3つのパターンでしたが、実際は10パターン あります。説明不足ですみません。 処理の内容は、条件付き書式設定そのものなのですが、条件が多くて???の状態 です。 記号は 空白、●、■、J、○、□、p、P、∴、−、の10パターンです。 何度もすみません。よろしくおねがいします。 |
endoさん、おはようございます。 for i = 0 to 30000 for j = 0 to 111 if(cells(i,j).value = "○") then cells(i,j).Interior.ColorIndex = 5 ・ ・ next next 300万個のセルに対しての処理で、所要時間が4分だと十分速い気がしますが。 それに、行・列番号でゼロを指定したらエラーになると思いますけど...。 それはさておき。 Sub Test() On Error Resume Next Set r1 = Cells.SpecialCells(xlCellTypeConstants) '定数の入ったセルのみ On Error Goto 0 ' Application.ScreenUpdating = False If Not r1 Is Nothing Then For Each r2 In r1 With r2 Select Case .Value Case "●": .Interior.ColorIndex = 1 '好きな色番号を指定してね Case "■": .Interior.ColorIndex = 2 Case "J": .Interior.ColorIndex = 3 Case "○": .Interior.ColorIndex = 4 Case "□": .Interior.ColorIndex = 5 Case "p": .Interior.ColorIndex = 6 Case "P": .Interior.ColorIndex = 7 Case "∴": .Interior.ColorIndex = 8 Case "−": .Interior.ColorIndex = 9 Case Else: .Interior.ColorIndex = 0 End Select End With Next ' Set r1 = Nothing Application.ScreenUpdating = True End If End Sub 無駄なループを省くとしたらこんな感じでしょうか。 |
りん さん: レス、ありがとうございます。 出来ました。高速です。本当にありがとうございました。 行・列番号ゼロは愛嬌で。 P.S Excel2002ではこの機能が置換で付いているようですね。 ありがとうございました。 |