我有一個帶有名稱的樂隊及其流派的excel文件。將一個單元格中的多個條目轉換爲多個行
A列:bandname。 B欄:流派。
b列可能包含多個條目,如「流行/搖滾」。我想分成兩行。
實施例:
- [1] Awesomeband |流行音樂/搖滾
會被變換爲
- [1] Awesomeband |流行樂隊
- [2] Awesomeband | Rock
我怎麼會意識到在Excel中?任何線索?提前致謝。
我有一個帶有名稱的樂隊及其流派的excel文件。將一個單元格中的多個條目轉換爲多個行
A列:bandname。 B欄:流派。
b列可能包含多個條目,如「流行/搖滾」。我想分成兩行。
實施例:
會被變換爲
我怎麼會意識到在Excel中?任何線索?提前致謝。
寫了一些東西像@John Dirk Morrison,允許兩種以上的流派。不適用於選擇,只是Sheet1上的A列和B列。
Sub BandSplit()
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
Dim Genre() As String
Dim Count As Integer
Dim Index As Integer
Dim First As Boolean
Dim Row As Integer: Row = 2 ' Exclude Header Row
Do
Genre = Split(Sheet.Cells(Row, 2), "/")
Count = UBound(Genre)
First = True
If Count > 0 Then
Index = 0
Do
If First = True Then
Sheet.Cells(Row, 2).Value2 = Genre(Index)
First = False
Else
Sheet.Rows(Row).EntireRow.Insert (xlShiftDown)
Sheet.Cells(Row, 1).Value2 = Sheet.Cells(Row + 1, 1).Value2
Sheet.Cells(Row, 2).Value2 = Genre(Index)
End If
Index = Index + 1
If Index > Count Then
Exit Do
End If
Loop
End If
Row = Row + 1
If Sheet.Cells(Row, 1).Value2 = "" Then
Exit Do
End If
Loop
End Sub
高亮B柱和運行這個VBA應該做的伎倆:
Sub bandsplit()
Dim c As Range
Dim splitv() As String
For Each c In Selection
splitv = Split(c.Value, "/")
If UBound(splitv) > 0 Then
c.EntireRow.Insert
c.Offset(-1, 0).Value = splitv(1)
c.Offset(-1, -1).Value = c.Offset(0, -1).Value
c.Value = splitv(0)
End If
Next c
End Sub
它限制在2種類型,但你可以破解它添加更多。
我假設Awesomeband |流行|搖滾保存在A1位置
對於Awesomeband |流行=LEFT(A1,15)
對於Awesomeband |巖 = =LEFT(A1,12)&""&(RIGHT(A1,4))
我認爲這應該工作。
對於@那伏乃爾的嘗試着想,拆分到C1:D2放在=A$1
並複製到A2。在D1:
=LEFT(B1,FIND("/",B1)-1)
和D2:
=MID(B1,FIND("/",B1)+1,LEN(B1))
嘿,非常感謝你的努力。我以前沒有做過VBA。我收到以下錯誤「預計結束子」 - 我該如何解決這個問題,以便讓代碼順利運行? :) – eLudium 2014-12-23 10:46:03
代碼爲我編寫時,我可以檢查你是否完全複製代碼?聽起來像是你錯過了最後一行'end sub' – NickSlash 2014-12-23 20:55:35