2017-04-21 3 views
0

私は次のコードを持っている:A106:A107:A110:A111:A112:A113:A118:私は取得したいと思いA119コピー ":"

偶数奇数の2つの異なる列で答えてください。

例:A106:A110:A112:A118A107:A111:A113:A119

誰でも私に何を自動で行うのか教えていただけますか?奇数値を抽出する

Public Function ExtractOdds(Data As String, Delimiter As String, IsOdd As Boolean) As String 
    Dim Elements() As String 
    Dim Result As String 

    Elements = Split(Data, Delimiter) 

    For Each Item In Elements 
     If Right(Item, 1) Mod 2 = -IsOdd Then 
      If Len(Result) > 0 Then 
       Result = Result & Delimiter 
      End If 
      Result = Result & Item 
     End If 
    Next Item 

    ExtractOdds = Result 
End Function 

使用法:

+0

はい、「Mid」を使用して数値を抽出し、次に「Mod」関数を使用します –

答えて

2

このVBA機能を試してみてください

=ExtractOdds(A1,":",TRUE) 

使い方をしても値を抽出するために:

=ExtractOdds(A1,":",FALSE) 
0

これはそれを行うだろう:

Sub Test() 
Dim sPart, sFull As String 
Dim WS1, WS2 As Worksheet 
Dim i As Long 

Set WS1 = ActiveSheet 
sFull = "A106:A107:A110:A111:A112:A113:A118:A119" 
Sheets.Add After:=Sheets(Sheets.Count) 
Set WS2 = ActiveSheet 

WS2.Range("A1").Value = "Odd" 
WS2.Range("B1").Value = "Even" 

Do While InStr(sFull, ":") 
    sPart = Left(sFull, InStr(sFull, ":")) 
    i = Mid(sPart, 2, Len(sPart) - 2) 
    If i Mod 2 <> 0 Then 
     WS2.Range("A" & WS2.Rows.Count).End(xlUp).Offset(1).Value = Left(sPart, Len(sPart) - 1) 
     Else 
     WS2.Range("B" & WS2.Rows.Count).End(xlUp).Offset(1).Value = Left(sPart, Len(sPart) - 1) 
    End If 
    sFull = Right(sFull, Len(sFull) - Len(sPart)) 
Loop 

sPart = sFull 
i = Mid(sPart, 2, Len(sPart) - 1) 
If i Mod 2 <> 0 Then 
    WS2.Range("A" & WS2.Rows.Count).End(xlUp).Offset(1).Value = Left(sPart, Len(sPart) - 1) 
    Else 
    WS2.Range("B" & WS2.Rows.Count).End(xlUp).Offset(1).Value = Left(sPart, Len(sPart) - 1) 
End If 

End Sub