2016-12-01 52 views
1

我有每一行的数字序列的第一个字符后,我想copy and paste在该小区旁边的每个序列的最后一个数字。该序列包含两个点,我想复制并粘贴出现在第一个点之后的所有内容。的Excel 2016复制这一切重演在Excel VBA

检查以下样品:

Sequence: "12345678.11.11" 
Result should be: "11.11" 
在不同的小区

对此有何想法? VBA编码或正常的Excel表单编码都可以。我会插入到一个VBA后面。

感谢您的帮助。 问候, 蒂博尔

+0

嘿!多谢你们俩。这两个答案都非常有价值。 如果范围一直在变化怎么办?我如何用循环解决这个问题?只要找到特定列中的数据,我就想循环运行? –

回答

1

试试这个(注释)代码

Option Explicit 

Sub main() 
    Dim cell As Range 
    With Worksheets("MySheet") '<--| change "MySheet" to your actual sheet name 
     For Each cell In .Range("A1:A10").SpecialCells(xlCellTypeConstants) '<--| change "A1:A10" to your actual range with dotted numbers 
      cell.Offset(, 1) = "'" & Split(cell, ".")(1) & "." & Split(cell, ".")(2)'<--| write last to dotted numbers in cell adjacent to current one 
     Next cell 
    End With 
End Sub 
+0

嘿!感谢您的回答是非常有价值的。如果范围总是在变化呢?我如何用循环解决这个问题?只要找到特定列中的数据,我就想循环运行? –

+0

我试过这个。 :表( “KKK”)范围( “AF” &J)= “(= RIGHT!KKK R4C32,LEN(AE) - 查找(” “AE))” 当我把这个交给了VBA,它会在FIND之后为点返回一个编译错误。它会从AF列中取出信息,并将其放入AE列。它被放入循环中,并在没有更多数据时结束。 –

+0

循环已经存在于'对于每个小区...'。和'.SpecialCells(xlCellTypeConstants)'已经需要照顾考虑不空单元格只在范围内它被要求。所以你只要把'.Range(“A1:A10”)'改为'。专栏(“AF”)'和你完成 – user3598756

2

如果它总是第一个句号,那么你可以使用下面的函数在电子表格中,而不是VBA(例如在单元格A1):

=RIGHT(A1, (LEN(A1) - FIND(".", A1))) 
+0

谢谢,它运作良好!我也会尝试在VBA中弄清楚。让我们看看它是否有效。 –

0

我不会建议VBA,因为工作表功能,非常适合这种事情:

=MID(A1,FIND(".",A1)+1,100)) 
=REPLACE(A1,1,FIND(".",A1),"") 

...只是两个例子尚未被赋予


如果你想给VBA一展身手,此功能在您的VBA编辑器添加到模块:

Function GetRight(rng As Range) 
    GetRight = Right(rng.value, Len(rng.value) - InStr(rng.value, ".")) 
End Function 

...然后只需使用该函数的工作表上这样

=GetRight(A1) 

可以沿上下拖动这像一个正常的功能

编辑

以下是完整的代码,如果你想VBA找到在A列的所有值和所需的输出返回到B列

Sub GetAllRight() 
    Dim rng As Range, r As Range 

    With ThisWorkbook.Worksheets("Sheet1") 
     Set rng = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)) 
    End With 
    For Each r In rng 
     r.Offset(0, 1).Value = GetRight(r) 
    Next r 
End Sub 

Function GetRight(rng As Range) As String 
    GetRight = Right(rng.Value, Len(rng.Value) - InStr(rng.Value, ".")) 
End Function