• 締切済み

EXCEL VBAでのコーディング方法

A列      1.1       1.1.1      1.1.1.1     1.1.1.2     ・・・ 1.1.1.10 1.1.2 1.1.3 と縦に並んでいるデータがあります。B列には年月日が入っています。 1.1は1.1.1~1.1.3の中の最小年月日 1.1.1は1.1.1.1~1.1.1.10の中の最小年月日 としてC列に表示させたいと思っています。 Sub StrCount() shname = ActiveSheet.Name For i = 4 To Sheets(shname).Range("J2").Value lstrBuf = Sheets(shname).Range("A" & i).Value llngCnt = Len(lstrBuf) - Len(Replace(lstrBuf, ".", "")) Next End Sub で.の数を取得する所までは考えたのですが、分岐の条件が 思いつきません。お教えいただけないでしょうか。

みんなの回答

  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

試してませんが、以下のコードでどうでしょう? Sub StrCount() dim key as string dim f as string dim v as string sh = ActiveSheet For i = 4 To sh.Range("J2").Value key = sh.Range("A" & i).Value & "." '検索値に.をつける f= "" For j = 4 To sh.Range("J2").Value '順番に並んでいるか分からないのでとりあえず同じ範囲でloop v = replace( sh.Range("A" & j).Value, key, "") 検索対象を検索値で置き換える if(instr(v,".")=0) then '.が残ってなければ対象 f = f & "," & "B" & j end if next if (f <>"") then sh.Range("A" & i).formula = "MIN(" & mid(f,2) & ")" end if Next End Sub

関連するQ&A