|    | 
     ▼nokubo さん: 
> 
>A列には10000から始まる部品コードが50000まで入力されております。 
>部品コードの上2桁をシート名とし、上2桁が一致する部品コードを取得したいと 
>考えております。 
> 
>例:10000〜10999までがSheet名『10』 
>  11000〜11999までがSheet名『11』 
>  13000〜13999までがSheet名『13』 
>※桁が飛ぶ場合もあります。 
>  Sheet名『10』のデータはA2:A1000,10000:10999です。 
>  A列を走査して、50000以降はデータが入っていないので、 
>  プログラムを終了する。というようにしたいのです。 
 
ならば、Sheet名は、『10』から『49』までですよね? 
はじめにシートを作成し、 
 
A列の値の上2桁を取得するには、 
 
Sub test() 
  Dim i As Long 
  Dim myVal As Long 
   
  With Sheets("Sheet1") 
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 
      If Not IsEmpty(Cells(i, 1).Value) Then 
        myVal = Left(Cells(i, 1).Value, 2) 
      End If 
     ' MsgBox myVal 
    Next 
  End With 
End Sub 
 
 
でできると思うので、後はSelect Caseで分岐したらいかがでしょう? 
 
> 
>IF Sheet1のA2が空白でなければ、新たにA2の上2桁の値をシート名とした、シートを作成する。 
> 
>Sheet1のA3の上2桁の値がA3の上のセルの値と同じであればA3の値を新たに作成した、シートへ転記する。 
> 
>上記のような事をしたいとおもっていますが、可能でしょうか? 
 | 
     
    
   |