[英]Insert copied row in excel based on row's cell data, then populate cells based on parts of row's referenced cell
誰能理解我要做什么? 這是我想用語言解釋的最好方法。 根據單元格數據在excel中插入行,然后將先前的行數據復制到新行,然后從原始行引用的單元格數據的一部分中填充單元格。
這是以前的圖像:
這是結果的圖像:
我不知道是否可以使用VBA /宏,內置公式等完成此操作
另一種描述我的手動過程的方法是從第2行開始,如果C2中有值,那么我插入一個新行,但是在C2中用逗號分隔的多個值。 然后,我將內容從A2和B2復制到新的空白行3和4,然后將值從C2中分離出來並將其粘貼到C2 C3,C4中。 如果一行在C列中沒有值,那么我將移動到下一行,依此類推,直到我到達C列中具有單元格值的行並從上面重復該方法。
在您的工作簿中,創建一個名為“ Destination ”的新工作表。 將以下代碼復制並粘貼到VBA中的新模塊中...
Public Sub SplitRowsBasedOnLastColumn()
Dim rngCells As Range, lngRow As Long, lngCol As Long, strLastColValue As String, i As Long
Dim strDelimiter As String, objDestSheet As Worksheet, lngWriteRow As Long, arrValues
Set rngCells = Selection
strDelimiter = ","
Set objDestSheet = Sheets("Destination")
lngWriteRow = 1
With rngCells
objDestSheet.Cells.Clear
For lngCol = 1 To .Columns.Count
objDestSheet.Cells(1, lngCol) = .Cells(1, lngCol)
Next
For lngRow = 2 To .Rows.Count
strLastColValue = .Cells(lngRow, .Columns.Count)
If strLastColValue = "" Then strLastColValue = " "
arrValues = Split(strLastColValue, strDelimiter)
For i = 0 To UBound(arrValues)
lngWriteRow = lngWriteRow + 1
For lngCol = 1 To .Columns.Count - 1
objDestSheet.Cells(lngWriteRow, lngCol) = .Cells(lngRow, lngCol)
Next
objDestSheet.Cells(lngWriteRow, .Columns.Count) = Trim(arrValues(i))
Next
Next
End With
End Sub
現在選擇您的數據范圍,包括標題(如圖所示),然后運行宏。
完成后,檢查“ 目的地 ”表,您應該得到結果。
我根據您提供的數據集編寫了這個,如果您有任何其他情況,可能需要調整。
讓我知道事情的后續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.