Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25875 / 76732 ←次へ | 前へ→

【56194】Re:文字の検索〜他シートへの書き出しについて。
発言  kanabun  - 08/6/8(日) 15:49 -

引用なし
パスワード
   ▼瞬希 さん:
こんにちは。
▼かみちゃん さん:
よこから 失礼します。

Findメソッドの方法でも、書きだすだけならできないことはないと思います。
なぜ多重検索になってしまうのか、原因は見つかりましたか?
Findで見つかったらセルの書式を変えていますが、Do〜Loopのなかで
書式のチェックがなされていないからですよね。
書式を変えるのでもいいし、C列の範囲の値をいったん配列に退避しておいて、
Do〜FindNext〜Loop の中では 見つかったセルをClearContents していっても
いいと思います。(全セルの検索が終了したら 元の値を配列から書き戻します)

>本当にしたい作業は
>    C列    H列
>    1    A+A
>    2    B+B
>    3    C+C
>    4    D+D
>    5    E+E
>    6    F+F
>と書き出すことなんです

そういうときは Dictionaryオブジェクトを利用すると効率よいですよ。

Sub Try2()
 Dim dic As Object
 Dim vC, vH, cc As Range
 Dim i As Long, n As Long
 Dim ss As String
 
 With Worksheets("sheet1")
   Set cc = .Range("C2", .Cells(Rows.Count, "C").End(xlUp))
   vC = cc.Value
   vH = cc.Offset(, 5).Value
 End With
 Set dic = CreateObject("Scripting.Dictionary")
 For i = 1 To UBound(vC)
   If Not IsEmpty(vC(i, 1)) Then
     ss = dic(vC(i, 1))
     If Len(ss) Then ss = ss & "+"
     ss = ss & vH(i, 1)
     dic(vC(i, 1)) = ss
   End If
 Next
 n = dic.Count
 With Worksheets("Sheet2")
   .Range("C2").Resize(n).Value = Application.Transpose(dic.Keys)
   .Range("H2").Resize(n).Value = Application.Transpose(dic.Items)
 End With
 Beep
 Set dic = Nothing
End Sub

1 hits

【56185】文字の検索〜他シートへの書き出しについて。 瞬希 08/6/8(日) 14:12 質問
【56186】Re:文字の検索〜他シートへの書き出しにつ... かみちゃん 08/6/8(日) 14:24 発言
【56189】Re:文字の検索〜他シートへの書き出しにつ... 瞬希 08/6/8(日) 14:58 お礼
【56190】Re:文字の検索〜他シートへの書き出しにつ... かみちゃん 08/6/8(日) 15:18 発言
【56191】Re:文字の検索〜他シートへの書き出しにつ... 瞬希 08/6/8(日) 15:25 お礼
【56194】Re:文字の検索〜他シートへの書き出しにつ... kanabun 08/6/8(日) 15:49 発言
【56195】Re:文字の検索〜他シートへの書き出しにつ... 瞬希 08/6/8(日) 17:24 お礼

25875 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free