2016-12-01 51 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