Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
連続した重複データの個数の最大を表示するには
投稿日時: 18/07/16 16:23:31
投稿者: bokenasu

こんにちは
よろしくお願いします
A列に0または100のデータが入力されています。
0,0,0,100,100,100,0,0,0,0,100,100,0,0,100,100,100,100
というような感じです。個数は1000個前後です。
上記の場合は100が連続して4つあるので
適当なセルに4と表示させたいのですが
作り方がよくわかりません。
Function Renzokudatanokosuu(範囲)のように作るか
Subプロシージャで作るか見当がつきません。
どなたか教えてください。
よろしくお願いします。

回答
投稿日時: 18/07/16 17:38:45
投稿者: WinArrow
投稿者のウェブサイトに移動

「Functionプロシジャ」「Subプロシジャ」云々より
取得する方法を先に考えるべきです。
 
ヒントとして、「オートフィルタ」を使用する方法を提案します。
1行目に「項目名を設置します。
オートフィルタで「100」を抽出条件に選択すると
「100」が連続する塊がいくつか取得可能です。
その塊毎のセル個数の最大値を求めれば、希望の答えになります。
 
ヒント(参考コード)
Sub test()
Dim mycells As Range, mycell As Range
With ActiveSheet
    Range("A1").AutoFilter _
        Field:=1, Criteria1:="100"
     
    Set mycells = .Range("A1").CurrentRegion. _
        SpecialCells(xlCellTypeVisible)
    For Each mycell In mycells.Areas
        Debug.Print mycell.Cells.Count
    Next
     
End With
End Sub

回答
投稿日時: 18/07/16 17:50:50
投稿者: 半平太

>Function Renzokudatanokosuu(範囲)のように作るか
>Subプロシージャで作るか見当がつきません。
 
打ち出すセルが決まってないなら、Function(ユーザー定義関数)にして、
適当なセルに数式を入力する方がいいのかも知れません。
 
あと、一般の関数式でも出来ますよ。
=MAX(FREQUENCY(ROW(A1:A2000),IF(A1:A1999<>100,ROW(A1:A1999))))-1
これは、Ctrl+Shift+Enter で入力確定する必要があります。(重要)

投稿日時: 18/07/21 16:08:33
投稿者: bokenasu

WinArrow 様
半平太 様
回答ありがとうございます。
私はこの暑さでダウンしてしまいすぐに返信すべきところ
お礼の報告が遅れて大変申し訳ありませんでした。
ありがとうございます。
オートフィルタを使用して解決しましたが
配列を使用して表示できるのは素晴らしいと思います。
私の脳味噌では配列を理解できなく情けありません。