最初の2文字と6桁の数字のみを1つのセルから別のセルに抽出するにはどうすればよいですか?すなわち、列1にはaa111111、bb222222、ccccc、dd12、eeee1がありますExcelから最初の2文字と6桁の数字を抽出し、別のセルにコピーします。
この場合、aa111111とbb222222だけをコピーします。
おかげで、 アレックス
最初の2文字と6桁の数字のみを1つのセルから別のセルに抽出するにはどうすればよいですか?すなわち、列1にはaa111111、bb222222、ccccc、dd12、eeee1がありますExcelから最初の2文字と6桁の数字を抽出し、別のセルにコピーします。
この場合、aa111111とbb222222だけをコピーします。
おかげで、 アレックス
この短いマクロ試してみてください:
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
を
あなたの文字列がでている場合:その後、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
これを行う別の方法があります。数式は、文字列をループして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(たとえば)に置き、
をドラッグします