2014-12-19 68 views
1

我有一個帶有名稱的樂隊及其流派的excel文件。將一個單元格中的多個條目轉換爲多個行

A列:bandname。 B欄:流派。

b列可能包含多個條目,如「流行/搖滾」。我想分成兩行。

實施例:

  • [1] Awesomeband |流行音樂/搖滾

會被變換爲

  • [1] Awesomeband |流行樂隊
  • [2] Awesomeband | Rock

我怎麼會意識到在Excel中?任何線索?提前致謝。

回答

2

寫了一些東西像@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 
+0

嘿,非常感謝你的努力。我以前沒有做過VBA。我收到以下錯誤「預計結束子」 - 我該如何解決這個問題,以便讓代碼順利運行? :) – eLudium 2014-12-23 10:46:03

+0

代碼爲我編寫時,我可以檢查你是否完全複製代碼?聽起來像是你錯過了最後一行'end sub' – NickSlash 2014-12-23 20:55:35

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

我假設Awesomeband |流行|搖滾保存在A1位置
對於Awesomeband |流行=LEFT(A1,15)
對於Awesomeband |巖 = =LEFT(A1,12)&""&(RIGHT(A1,4))
我認爲這應該工作。

+0

「冒牌貨不。這是在A1中存儲的樂隊名稱,但即使假設「Pop/Rock」在那裏,您的第二個公式會返回「Pok」。這個'&「」&'什麼也沒做,但主要的問題可能是字符串長度不能保證是特定的長度。 – pnuts 2014-12-19 16:54:53

+0

** A欄:樂隊名稱。 B列:流派。** B列包含「Pop/Rock」。 – pnuts 2014-12-19 17:55:24

1

對於@那伏乃爾的嘗試着想,拆分到C1:D2放在=A$1並複製到A2。在D1:

=LEFT(B1,FIND("/",B1)-1) 

和D2:

=MID(B1,FIND("/",B1)+1,LEN(B1)) 
相關問題