Excel VBA質問箱 IV

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

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


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

【57696】同値行の塗りつぶし gaku 08/9/10(水) 2:50 質問[未読]
【57699】Re:同値行の塗りつぶし ハチ 08/9/10(水) 8:58 発言[未読]
【57703】Re:同値行の塗りつぶし gaku 08/9/10(水) 10:16 お礼[未読]
【57706】Re:同値行の塗りつぶし ハチ 08/9/10(水) 10:45 発言[未読]
【57709】Re:同値行の塗りつぶし gaku 08/9/10(水) 11:55 質問[未読]
【57712】Re:同値行の塗りつぶし ハチ 08/9/10(水) 12:43 回答[未読]
【57725】Re:同値行の塗りつぶし gaku 08/9/10(水) 15:38 質問[未読]
【57734】Re:同値行の塗りつぶし ハチ 08/9/11(木) 8:31 発言[未読]

【57696】同値行の塗りつぶし
質問  gaku  - 08/9/10(水) 2:50 -

引用なし
パスワード
   質問させていただきます。

A列に数字が入っています。他の列には名前や金額が入っています。
同じ数字が入っている行のセルの色を他の列の情報が入っている列まで
灰色に塗りつぶし、さらにその同じ数字の行の金額の列の合計数値を
最終列に出したいのですが・・・。

初歩的な質問ですみません。
どなたかご教授ください。

【57699】Re:同値行の塗りつぶし
発言  ハチ  - 08/9/10(水) 8:58 -

引用なし
パスワード
   ▼gaku さん:

マクロで作成する予定ですか?
関数でもできそうです。

>A列に数字が入っています。他の列には名前や金額が入っています。

>同じ数字が入っている行のセルの色を他の列の情報が入っている列まで
>灰色に塗りつぶし、

情報が入っている列数が決まっているなら、条件付き書式でできそうです。

さらにその同じ数字の行の金額の列の合計数値を
>最終列に出したいのですが・・・。

こちらは、SUMIFでできそう。

【57703】Re:同値行の塗りつぶし
お礼  gaku  - 08/9/10(水) 10:16 -

引用なし
パスワード
   ハチ さん
ご回答ありがとうございます。

>マクロで作成する予定ですか?
マクロの作業途中にこの作業をはさみたいのですが・・・。

>関数でもできそうです。
マクロ内にエクセル関数をはさむこともできますか?

【57706】Re:同値行の塗りつぶし
発言  ハチ  - 08/9/10(水) 10:45 -

引用なし
パスワード
   ▼gaku さん:

>>マクロで作成する予定ですか?
>マクロの作業途中にこの作業をはさみたいのですが・・・。

マクロで処理するなら、条件付き書式は辞めたほうが良いですね。

>>関数でもできそうです。
>マクロ内にエクセル関数をはさむこともできますか?

できます。Range.Formula でセルに書き込むか、
Worksheetfunction.xxx という呼び出し方をします。

gakuさんは、どのくらいコードが書けますか?

まず、重複した番号を洗い出すマクロを作るのが先決だと思います。

【57709】Re:同値行の塗りつぶし
質問  gaku  - 08/9/10(水) 11:55 -

引用なし
パスワード
   >できます。Range.Formula でセルに書き込むか、
>Worksheetfunction.xxx という呼び出し方をします。
そうなんですか。ありがとうございます。
>
>gakuさんは、どのくらいコードが書けますか?
VBAの修正を入門書片手に始めたばかりで、全くの初心者です。
>
>まず、重複した番号を洗い出すマクロを作るのが先決だと思います。
重複した番号は、COUNTIFで洗い出せばよいのでしょうか?

【57712】Re:同値行の塗りつぶし
回答  ハチ  - 08/9/10(水) 12:43 -

引用なし
パスワード
   ▼gaku さん:

>>まず、重複した番号を洗い出すマクロを作るのが先決だと思います。
>重複した番号は、COUNTIFで洗い出せばよいのでしょうか?

その通りです。COUNTIFで重複番号を洗い出せます。

案としては、
1.
作業列を作って、作業列に.Formulaで数式を埋め込む。
2.
ループを作って、WorksheetFunction.CountIfで判定する。

新規SheetにSampleでテストデータを作って試してみてください。
Sub Sample()
  Dim i As Long
  Dim j As Long
  
  For i = 1 To 20
    Randomize
    j = Int(Rnd * 20)
    Cells(i, 1).Value = j
  Next
End Sub

Sub test1()
  With Range("A1:A20").Offset(, 1)
    .Formula = _
    "=IF(COUNTIF($A$1:$A$20,A1)>1,""×"","""")"
    .Value = .Value
  End With
End Sub

Sub test2()
  Dim Rng As Range
  
  For Each Rng In Range("A1:A20").Cells
    If WorksheetFunction. _
    CountIf(Range("A1:A20"), Rng) > 1 Then
      Rng.Offset(, 2).Value = "××"
    End If
  Next
End Sub

【57725】Re:同値行の塗りつぶし
質問  gaku  - 08/9/10(水) 15:38 -

引用なし
パスワード
   ハチ さん
ありがとうございます。
重複した番号の洗い出しは成功しました。

次は、洗い出した番号と一致する行の塗りつぶしなんですが、
これもエクセル関数をマクロ内に埋め込むのでしょうか?

【57734】Re:同値行の塗りつぶし
発言  ハチ  - 08/9/11(木) 8:31 -

引用なし
パスワード
   ▼gaku さん:
>ハチ さん
>ありがとうございます。
>重複した番号の洗い出しは成功しました。

どの案を採用したのですか?
高速に処理できるのは、関数埋め込みですが、
初心者と書かれていましたので、ループ(test2)のほうが、
その後の処理はやりやすいと思います。

>次は、洗い出した番号と一致する行の塗りつぶしなんですが、
>これもエクセル関数をマクロ内に埋め込むのでしょうか?

関数でセルに色を塗ることはできません。
マクロの記録をしてコードを取得してみてください。
取得したコードを参考書を見ながら解読すると、
だんだん解ってきますよ。

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