我有一个带有乐队名称及其类型的excel文件。
A栏:带名。 B栏:流派。
b列可能包含多个条目,例如“pop / rock”。我想把它分成两行。
示例:
将转换为
我如何在excel中意识到这一点?有线索吗?提前谢谢。
答案 0 :(得分:3)
突出显示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种类型,但您可以通过破解它来添加更多类型。
答案 1 :(得分:3)
如果想要写一些像@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
答案 2 :(得分:1)
为了@ Navneet的尝试,分成C1:D2放入=A$1
并复制到A2。在D1中:
=LEFT(B1,FIND("/",B1)-1)
并在D2中:
=MID(B1,FIND("/",B1)+1,LEN(B1))
答案 3 :(得分:-1)
我假设 Awesomeband | Pop | Rock 存储在A1处
对于 Awesomeband | Pop =LEFT(A1,15)
对于 Awesomeband | Rock = =LEFT(A1,12)&""&(RIGHT(A1,4))
我认为这应该有用。