【问题标题】:VBA macro to move cells to a new sheet and removing cell headers in ExcelVBA 宏将单元格移动到新工作表并删除 Excel 中的单元格标题
【发布时间】:2015-05-29 23:14:00
【问题描述】:

我正在尝试创建一个 VBA 宏以将工作表 1 上的内容移动到工作表 2 上的行。这与此处发布的问题非常相似,但我无法让宏为我工作,因为我不明白答案的可变部分。 Previously Answered Question
我们将把一块信息粘贴到一张表中,如下所示,A 列中的所有数据跨多个单元格:

问题描述:测试。

优先级:标准

个人编号:xxxxxxx

遭遇号:xxxxxxx

报告人:John CC X. Smith 2015 年 5 月 12 日上午 11:40 TSTEST2 (jsmith)

模板名称:fts_clinical_guide_8310

因此,我们想要将问题描述单元格中的信息移动到工作表 2 上的一行,其中仅在“:”之后的文本等其他单元格。我还需要所有单元格信息在移动到第 2 表时保持在 1 行中。我希望这是有道理的,我非常感谢任何帮助。谢谢。


编辑:这是我要修改的代码。它提到了我稍后会更改的原始答案“标题”。例如,它提到了 MyID="" 而我不知道如何将信息放入引号中以使其工作。

Sub MoveOver() 

Cells(1, 1).Activate 

myId = ""
myTitle = ""
myAuthor = ""

While Not ActiveCell = ""

If UCase(Left(ActiveCell, 4)) Like "*ID*" Then myId = Trim(Mid(ActiveCell, InStr(1, ActiveCell, ":") + 1, Len(ActiveCell)))

If UCase(Left(ActiveCell, 4)) = "TITL" Then myTitle = Trim(Mid(ActiveCell, InStr(1, ActiveCell, ":") + 1, Len(ActiveCell)))

If UCase(Left(ActiveCell, 4)) = "AUTH" Then myAuthor = Trim(Mid(ActiveCell, InStr(1, ActiveCell, ":") + 1, Len(ActiveCell)))

If ActiveCell Like "*---*" Then
    'NOW, MOVE TO SHEET2!
    toRow = Sheets(2).Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
    Sheets(2).Cells(toRow, 1) = myId
    Sheets(2).Cells(toRow, 2) = myTitle
    Sheets(2).Cells(toRow, 3) = myAuthor
    myId = ""
    myTitle = ""
    myAuthor = ""
End If

ActiveCell.Offset(1, 0).Activate

Wend

【问题讨论】:

  • 欢迎来到stackoverflow,到目前为止你尝试了什么?有你写的代码 sn-ps 吗?
  • 我已经用我尝试使用的代码更新了这个问题。感谢您的快速回复!

标签: vba excel


【解决方案1】:

这对你有用

Sub SpecialCopy()
    Dim trg As Worksheet
    Set trg = ThisWorkbook.Worksheets(2)
    Dim i As Long, j As Long
    Dim lastRow As Long: lastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    Dim lastRow2 As Long: lastRow2 = trg.Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1
    For i = 1 To lastRow ' assuming we starting from second row
        trg.Cells(lastRow2, i).Value = Split(Cells(i, 1).Value, ":")(0)
        For j = 1 To UBound(Split(Cells(i, 1).Value, ":"))
            trg.Cells(lastRow2 + 1, i).Value = trg.Cells(2, i).Value & Split(Cells(i, 1).Value, ":")(j)
        Next j
    Next i
End Sub

编辑:我已经编辑了代码,如果这对你有用,请告诉我。

【讨论】:

  • 非常感谢您的回复,除了我需要将信息分成一行的单元格之外,这很有效。我的问题在这方面不清楚,对此我深表歉意。我还需要在将每个单元格的标题添加到工作表 2 时将其删除。因此,将其添加到工作表 2 时的“优先级:xxxx”将只是“xxxx”。这有任何意义吗?再次感谢您的帮助。
  • 不客气。请检查已编辑的答案。满意请采纳回复
  • 其实效果很好!最后一件事是,当我将新信息粘贴到工作表 A 并运行宏时,它会将信息插入到工作表 2 的同一行中。我们需要它进入下一个可用行。那可能吗?再次感谢您的所有帮助,我从您的代码中学到了很多东西!
  • 再次感谢您的快速回复!这次它在工作表 2 中添加了两行,第一行是标题信息,例如“优先级”,在第二行中它添加了标题和标题之后的信息。最好只将第二行添加到工作表 2,同时删除每个单元格的标题。
  • 我将 trg 单元格部分中的 2 更改为 1,它解决了标题问题和添加到行的以下信息,但它仍然在上面添加一行,只有标题信息.想法?
猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多