在Excel中,我試圖讓宏用移動號「 - 」。宏與破折號移動數字新細胞
我有一列E
與數字
54525841-1
454152
1365466
1254566-1
1452577-1
我想宏將所有那些有能力在年底列C. 破折號或連字符的數字,所以我需要E1
54525841名單-1被移動到C1
。
在Excel中,我試圖讓宏用移動號「 - 」。宏與破折號移動數字新細胞
我有一列E
與數字
54525841-1
454152
1365466
1254566-1
1452577-1
我想宏將所有那些有能力在年底列C. 破折號或連字符的數字,所以我需要E1
54525841名單-1被移動到C1
。
我得到了它通過這個工作:
Sub MoveDash()
x = Range("E" & Rows.Count).End(xlUp).Row
For Each Cell In Range("E2:E" & x)
If InStr(Cell, "-") <> 0 Then
Cell.Offset(, 1) = Cell
Cell.ClearContents
End If
Next Cell
end sub
你需要「工作表Sheet1」更改爲你的數據是表的名稱。
這看起來通過在E列中的每個單元格(與數據),並且如果它包含劃線移動值翻過到C柱。
Sub MoveDashes()
Dim Sheet As Worksheet
Dim Index As Long
Set Sheet = ThisWorkbook.Worksheets("Sheet1")
For Index = 1 To Sheet.Cells(Application.Rows.Count, "E").End(xlUp).Row
If InStr(1, Sheet.Cells(Index, "E"), "-") > 0 Then
Sheet.Cells(Index, "C") = Sheet.Cells(Index, "E").Value
Sheet.Cells(Index, "E").Value = ""
End If
Next
End Sub
我使用了宏而沒有任何事情發生。 – user1013478
是名爲「Sheet1」的工作表嗎?如果不是,則需要相應地調整代碼。 – JimmyPena
如果在問題表單爲活動工作表時正在運行宏,則不需要引用表單。每個循環的A會比for循環更有效。 – aevanko
是否必須是宏?高級過濾器如何?
你的號碼在列E.假設他們有一個頭。
E1: Number
E2: 54525841-1
E3: 454152
E4: 1365466
E5: 1254566-1
E6: 1452577-1
在工作表中的獨立區域(假設列G)將以下標準:
G1: Number
G2: *-*
你的高級篩選條件是這樣的:
任何與一個「 - 」中,將被複制到列C.
你可以做到這一點沒有VBA,但這裏是使用字典對象做一個有效的方法。
Sub MoveNumbersWithDash()
Application.ScreenUpdating = False
Dim i As Long, lastRow As Long
Dim varray As Variant
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
lastRow = Range("E" & Rows.Count).End(xlUp).Row
varray = Range("E1:E" & lastRow).Value
For i = 1 To UBound(varray, 1)
If InStr(1, varray(i, 1), "-") <> 0 Then
dict.Add i, varray(i, 1)
End If
Next
Range("C1").Resize(dict.Count).Value = _
Application.WorksheetFunction.Transpose(dict.items)
Application.ScreenUpdating = True
End Sub
工作原理: 這裏的主要議題是避免調用到Excel(如每個循環)。這將使該功能快速發展(特別是如果你有成千上萬的行)並且效率更高。首先,我找到E中使用的最後一個單元格,然後將整行轉儲到變量數組中。然後我遍歷每個元素,檢查它是否包含「 - 」,如果它包含,我將它添加到字典對象。 POINT:將條目添加爲ITEM,而不是KEY。這確保我們允許重複。變量I對於每個條目都是唯一的,所以我將它用作關鍵字。然後,我簡單的轉儲細胞的整個陣列「 - 」入列C.
爲什麼字典? 字典對象非常快,並帶有2個非常棒的功能:.Keys和.Items。這些將返回字典中所有鍵或項目的數組,您可以使用Transpose函數將整個值列轉儲到Excel中。超高效。
這是在Excel中,還是什麼? –
它適用於excel – user1013478