Excel VBA質問箱 IV

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

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


1614 / 13644 ツリー ←次へ | 前へ→

【73104】重複しているデータを検索し★マークで強調させたい hacuen 12/11/13(火) 9:38 質問[未読]
【73105】Re:重複しているデータを検索し★マークで... ウッシ 12/11/13(火) 10:18 回答[未読]
【73106】Re:重複しているデータを検索し★マークで... hacuen 12/11/13(火) 18:52 お礼[未読]
【73107】Re:重複しているデータを検索し★マークで... ウッシ 12/11/13(火) 21:07 回答[未読]
【73110】Re:重複しているデータを検索し★マークで... hacuen 12/11/15(木) 11:57 お礼[未読]

【73104】重複しているデータを検索し★マークで強...
質問  hacuen  - 12/11/13(火) 9:38 -

引用なし
パスワード
   VBA初心者です。
以下の様なマクロを作りたいです、ご教授お願いします。

(A.1)セルの値を取得
→取得した値でシート全体検索
ケース1.(A.1)と同じ値が1つ(全体で2つ)→★の入ったセルを(A.1)セルの前に挿入
ケース2.(A.1)と同じ値が2つ(全体で3つ)→★★の入ったセルを(A.1)セルの前に挿入
ケース3.(A.1)と同じ値が無い(全体で1つ)→取得したセルの一つ下のセルの値を取得し、再度検索実行
ケース4.(A.X)セルの値が無い→end

ケース4.になるまでは永久ループ的な感じです。

結果としては同じデータが2つあると★1つ、3つなら★2つが付くようにしたいです。
case文で作ろうとしたのですが、検索に引っかかった件数=変数として抽出するやり方が解りませんでした。

どうかよろしくお願いします。

【73105】Re:重複しているデータを検索し★マーク...
回答  ウッシ  - 12/11/13(火) 10:18 -

引用なし
パスワード
   こんにちは

データセル範囲が大きいと時間が掛かります。

Sub test()
  Dim r As Range
  Dim i As Long
  Dim s As Variant
  With Worksheets("Sheet1")
    For Each r In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
      s = r.Value
      i = WorksheetFunction.CountIf(.UsedRange, s)
      Select Case i
        Case 2
          r.Insert xlShiftToRight
          r.Offset(, -1).Value = "★"
        Case 3
          r.Insert xlShiftToRight
          r.Offset(, -1).Value = "★★"
      End Select
    Next
  End With
End Sub


▼hacuen さん:
>VBA初心者です。
>以下の様なマクロを作りたいです、ご教授お願いします。
>
>(A.1)セルの値を取得
>→取得した値でシート全体検索
>ケース1.(A.1)と同じ値が1つ(全体で2つ)→★の入ったセルを(A.1)セルの前に挿入
>ケース2.(A.1)と同じ値が2つ(全体で3つ)→★★の入ったセルを(A.1)セルの前に挿入
>ケース3.(A.1)と同じ値が無い(全体で1つ)→取得したセルの一つ下のセルの値を取得し、再度検索実行
>ケース4.(A.X)セルの値が無い→end
>
>ケース4.になるまでは永久ループ的な感じです。
>
>結果としては同じデータが2つあると★1つ、3つなら★2つが付くようにしたいです。
>case文で作ろうとしたのですが、検索に引っかかった件数=変数として抽出するやり方が解りませんでした。
>
>どうかよろしくお願いします。

【73106】Re:重複しているデータを検索し★マーク...
お礼  hacuen  - 12/11/13(火) 18:52 -

引用なし
パスワード
   おお、こんなに短い文で出来るのですか、ありがとうございます。

続けての質問で大変恐縮なのですが、
「同じ値」→「同じ値を含む」に出来ますでしょうか?
自分でも調べて色々いじったのですが、全く動かず…
恥ずかしながら再度ご教授お願いします。


▼ウッシ さん:
>こんにちは
>
>データセル範囲が大きいと時間が掛かります。
>
>Sub test()
>  Dim r As Range
>  Dim i As Long
>  Dim s As Variant
>  With Worksheets("Sheet1")
>    For Each r In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
>      s = r.Value
>      i = WorksheetFunction.CountIf(.UsedRange, s)
>      Select Case i
>        Case 2
>          r.Insert xlShiftToRight
>          r.Offset(, -1).Value = "★"
>        Case 3
>          r.Insert xlShiftToRight
>          r.Offset(, -1).Value = "★★"
>      End Select
>    Next
>  End With
>End Sub
>
>
>▼hacuen さん:
>>VBA初心者です。
>>以下の様なマクロを作りたいです、ご教授お願いします。
>>
>>(A.1)セルの値を取得
>>→取得した値でシート全体検索
>>ケース1.(A.1)と同じ値が1つ(全体で2つ)→★の入ったセルを(A.1)セルの前に挿入
>>ケース2.(A.1)と同じ値が2つ(全体で3つ)→★★の入ったセルを(A.1)セルの前に挿入
>>ケース3.(A.1)と同じ値が無い(全体で1つ)→取得したセルの一つ下のセルの値を取得し、再度検索実行
>>ケース4.(A.X)セルの値が無い→end
>>
>>ケース4.になるまでは永久ループ的な感じです。
>>
>>結果としては同じデータが2つあると★1つ、3つなら★2つが付くようにしたいです。
>>case文で作ろうとしたのですが、検索に引っかかった件数=変数として抽出するやり方が解りませんでした。
>>
>>どうかよろしくお願いします。

【73107】Re:重複しているデータを検索し★マーク...
回答  ウッシ  - 12/11/13(火) 21:07 -

引用なし
パスワード
   こんばんは

>「同じ値」→「同じ値を含む」に出来ますでしょうか?

ヒットする件数が増えますよね?

2つ以上有る場合、ヒットした件数−1の★をセットするなら、

Sub test1()
  Dim r As Range
  Dim i As Long
  Dim s As Variant
  With Worksheets("Sheet1")
    For Each r In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
      s = r.Value
      i = WorksheetFunction.CountIf(.UsedRange, "*" & s & "*")
      If i > 1 Then
        r.Insert xlShiftToRight
        r.Offset(, -1).Value = String(i - 1, "★")
      End If
    Next
  End With
End Sub

【73110】Re:重複しているデータを検索し★マーク...
お礼  hacuen  - 12/11/15(木) 11:57 -

引用なし
パスワード
   なるほどそういう考え方でしたか、頭が固いなぁ自分…

度々のご回答ありがとうございます、本当に助かりました。
今後も少しは自分で出来るように勉強したいと思います。

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