Excel VBA質問箱 IV

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

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


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

【24679】条件を満たすセルの数を数えたいのですが… 音速ブルー 05/5/2(月) 21:54 質問[未読]
【24680】Re:条件を満たすセルの数を数えたいのです... Hirofumi 05/5/2(月) 22:27 回答[未読]
【24681】Re:条件を満たすセルの数を数えたいのです... ponpon 05/5/2(月) 22:35 回答[未読]
【24685】Re:条件を満たすセルの数を数えたいのです... ちゃっぴ 05/5/3(火) 8:59 回答[未読]
【24686】Re:条件を満たすセルの数を数えたいのです... ponpon 05/5/3(火) 9:37 発言[未読]
【24687】Re:条件を満たすセルの数を数えたいのです... Kein 05/5/3(火) 11:29 回答[未読]

【24679】条件を満たすセルの数を数えたいのですが...
質問  音速ブルー  - 05/5/2(月) 21:54 -

引用なし
パスワード
   A列には、3桁の整数が入っています。(2桁ということはありません、すべて半角です)
その中で、一の位(一番右)の数が3であるセルの個数をB1に表示させたいと考えています。
そして作ったのが、以下のコードです。
Sub 三数え()
  Dim th As Integer
  Dim n As Integer
  Dim ttt As Object
  Set ttt = Range(Cells(2, 1), Cells(65535, 1))
    th = ttt.SpecialCells(xlCellTypeBlanks, Value.Right(, 1) = 3).Count
  Cells(1, 2).Value = th
End Sub

おそらく、specialcellsプロパティとcountプロパティを使うのだろうと思うのですが、「右から1文字目が3」のセルの指定の仕方がわかりません。
どうぞよろしくお願いします。

【24680】Re:条件を満たすセルの数を数えたいので...
回答  Hirofumi  - 05/5/2(月) 22:27 -

引用なし
パスワード
   こんなのでも出来ると思うよ?

Sub 三数え2()

  Dim i As Long
  Dim lngRows As Long
  Dim vntData As Variant
  Dim lngCount As Long
  
  'List先頭セル位置を設定
  With ActiveSheet.Cells(1, "A")
    '総行数を取得
    lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
    If lngRows <= 1 Then
      lngRows = 1
      ReDim vntData(1 To 1, 1 To 1)
      vntData(1, 1) = .Value
    Else
      'データを配列に取得
      vntData = .Resize(lngRows).Value
    End If
    'データの先頭から最終まで繰り返し
    For i = 1 To lngRows
      '末尾が3なら
      If vntData(i, 1) Mod 10 = 3 Then
        'lngCountをインクリメント
        lngCount = lngCount + 1
      End If
    Next i
    '結果を出力
    .Offset(, 1).Value = lngCount
  End With

  Beep
  MsgBox "処理が完了しました"
  
End Sub

【24681】Re:条件を満たすセルの数を数えたいので...
回答  ponpon  - 05/5/2(月) 22:35 -

引用なし
パスワード
   こんばんは。
>「右から1文字目が3」のセルの指定の仕方がわかりません。
Right(Range("A1").Value,1)
下のコードでできると思います。
確認してください。


Sub test()
  Dim myR As Range
  Dim r As Range
 
  Set myR = Range("A1", Range("A65536").End(xlUp))
  For Each r In myR
   If Len(r.Value) = 3 Then '一応確認
    If Right(r.Value, 1) = 3 Then
     i = i + 1
    End If
   End If
  Next
  MsgBox "個数は" & i & "個です。"
End Sub

【24685】Re:条件を満たすセルの数を数えたいので...
回答  ちゃっぴ  - 05/5/3(火) 8:59 -

引用なし
パスワード
   判定のLogicだけ

1. If 〜 Like "[1-9]#3" Then

2. If 〜 \ 100 > 0 And 〜 Mod 10 = 3 Then

正規表現を覚えると幅が広がります。

【24686】Re:条件を満たすセルの数を数えたいので...
発言  ponpon  - 05/5/3(火) 9:37 -

引用なし
パスワード
   おはようございます。
文字ではなく数値だから
> If 〜 \ 100 > 0 And 〜 Mod 10 = 3 Then
を使うのですね。
これからは、注意したいと思います。
まだまだ修行が足りません。

【24687】Re:条件を満たすセルの数を数えたいので...
回答  Kein  - 05/5/3(火) 11:29 -

引用なし
パスワード
   IV列を作業列として、数式を入れて判定するコードです。

Sub MyCount()
  On Error GoTo Line0
  With Range("A1", Range("A65536").End(xlUp)).Offset(, 255)
   .Formula = "=IF(RIGHT($A1,1)=""3"",1,"""")"
   Range("B1").Value = .SpecialCells(3, 1).Count
   .ClearContents
  End With
  Exit Sub
Line0:
  Range("B1").Value = 0
End Sub

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