Excel 在不同的列中复制以“奇偶”分隔的内容:&引用;
我有以下代码:A106:A107:A110:A111:A112:A113:A118:A119 我想在两个不同的栏目中得到答案:偶数和奇数 示例:A106:A110:A112:A118和A107:A111:A113:A119 有谁能告诉我如何自动执行此操作吗?尝试此VBA功能:Excel 在不同的列中复制以“奇偶”分隔的内容:&引用;,excel,vba,Excel,Vba,我有以下代码:A106:A107:A110:A111:A112:A113:A118:A119 我想在两个不同的栏目中得到答案:偶数和奇数 示例:A106:A110:A112:A118和A107:A111:A113:A119 有谁能告诉我如何自动执行此操作吗?尝试此VBA功能: Public Function ExtractOdds(Data As String, Delimiter As String, IsOdd As Boolean) As String Dim Elements()
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
用于提取奇数值的用法:
=ExtractOdds(A1,":",TRUE)
用于提取偶数值的用法:
=ExtractOdds(A1,":",FALSE)
尝试以下VBA功能:
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
用于提取奇数值的用法:
=ExtractOdds(A1,":",TRUE)
用于提取偶数值的用法:
=ExtractOdds(A1,":",FALSE)
这可以做到:
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
子测试()
暗晶石,如细绳般饱满
将WS1、WS2标注为工作表
我想我会坚持多久
设置WS1=ActiveSheet
sFull=“A106:A107:A110:A111:A112:A113:A118:A119”
Sheets.Add After:=工作表(Sheets.Count)
设置WS2=ActiveSheet
WS2.范围(“A1”).Value=“奇数”
WS2.范围(“B1”).Value=“偶数”
安装时执行(sFull,“:”)
sPart=左(sFull,仪表(sFull,“:”))
i=中间(短柱,2,长柱(短柱)-2)
如果我是Mod 20那么
WS2.Range(“A”&WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
其他的
WS2.Range(“B”和WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
如果结束
sFull=右(sFull,长(sFull)-长(短))
环
sPart=sFull
i=中间(短柱,2,长柱(短柱)-1)
如果我是Mod 20那么
WS2.Range(“A”&WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
其他的
WS2.Range(“B”和WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
如果结束
端接头
这样做可以:
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
子测试()
暗晶石,如细绳般饱满
将WS1、WS2标注为工作表
我想我会坚持多久
设置WS1=ActiveSheet
sFull=“A106:A107:A110:A111:A112:A113:A118:A119”
Sheets.Add After:=工作表(Sheets.Count)
设置WS2=ActiveSheet
WS2.范围(“A1”).Value=“奇数”
WS2.范围(“B1”).Value=“偶数”
安装时执行(sFull,“:”)
sPart=左(sFull,仪表(sFull,“:”))
i=中间(短柱,2,长柱(短柱)-2)
如果我是Mod 20那么
WS2.Range(“A”&WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
其他的
WS2.Range(“B”和WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
如果结束
sFull=右(sFull,长(sFull)-长(短))
环
sPart=sFull
i=中间(短柱,2,长柱(短柱)-1)
如果我是Mod 20那么
WS2.Range(“A”&WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
其他的
WS2.Range(“B”和WS2.Rows.Count).End(xlUp).Offset(1).Value=Left(sPart,Len(sPart)-1)
如果结束
端接头
yes,使用Mid
提取号码,然后使用Mod
功能yes,使用Mid
提取号码,然后使用Mod
功能