2016-09-22 6 views

答えて

0

この短いマクロ試してみてください:

Sub KopyKat() 
    Dim N As Long, i As Long, K As Long 
    Dim s As String 

    N = Cells(Rows.Count, 1).End(xlUp).Row 
    K = 1 

    For i = 1 To N 
     s = Cells(i, 1).Value 
     If Len(s) = 8 _ 
      And Mid(s, 1, 1) Like "[a-zA-Z]" _ 
      And Mid(s, 2, 1) Like "[a-zA-Z]" _ 
      And IsNumeric(Mid(s, 3)) Then 
       Cells(K, 2).Value = s 
       K = K + 1 
     End If 
    Next i 
End Sub 

enter image description here

0

あなたの文字列がでている場合:その後、B1中(ダウンコピー):

=IF(LEN(A1)>7,IF(AND(CODE(LOWER(MID(A1,{1,2},1)))<>CODE(UPPER(MID(A1,{1,2},1))),ISNUMBER(MID(A1,{3;4;5;6;7;8},1)*1)),LEFT(A1,8),""),"") 

これは、配列数式で、CTRL +で確認する必要がありますシフト+入力

式を評価実行すると何が起こるかを示しており、それがどのように働くか:) VBAを使用して


が、これは行います:

Sub CopyMe() 
    Dim x As Variant, i As Long 
    For Each x In Range([A1], Cells(Rows.Count, 1).End(xlUp)).Value2 
    If x Like "[a-zA-Z][a-zA-Z]######" Then 
     i = i + 1 
     Cells(i, 2) = x 
    End If 
    Next 
End Sub 
0

これを行う別の方法があります。数式は、文字列をループして6桁の数字を探します。この数字は、前の2文字(存在する限り)を取り、8文字の文字列を返します。それ以外の場合は、空の文字列を返します。

=IFERROR(MID(A1,SUMPRODUCT(ROW($A$1:$A$100),--ISNUMBER(VALUE(MID(A1,ROW($A$1:$A$100),6))))-2,8),"") 

ループ100倍、そう106文字の最大長までの文字列で動作します。数式を使用するには、列Aに文字列を置き、この式をセルB1(たとえば)に置き、

をドラッグします
関連する問題