【问题标题】:Insert cells when condition met满足条件时插入单元格
【发布时间】:2018-07-03 17:21:01
【问题描述】:

我的 Excel 工作表有 6 列,如下所示: A 列:新行, B 列:新副本, C栏:新面料, D列:位置, E 列:真实排序, F列:Excel排序,

我想知道如何编写一个宏来搜索 B 列,并且在 B 列中每次出现“Right”一词时,在 D、E 和 F 列的相应行中插入一个空格,然后上述行中相应列的结果将复制到这些单元格中。

ie:单词“Right”的第一次出现是在 B187 中。该宏将在D187、E187、F187中插入一个空白单元格,然后将D186中的数据复制到D187中,将E186中的数据复制到E187中,将F186中的数据复制到F 187中。

该文件有 750 行。 感谢您的任何见解! 卡尔

【问题讨论】:

  • 您可以使用 Find 方法,然后为其余部分录制一个宏,或者使用 Google 搜索 - 那里有很多资料。一旦你尝试了一些代码并卡住了再回来 - 这里的人通常不倾向于从头开始编写代码。
  • 在行中插入所有单元格后,您不会转移大量数据吗?

标签: excel vba


【解决方案1】:

我不明白你为什么要在单元格中添加一个空格,然后从上面的行中复制详细信息,所以下面的代码只是从上面的行中复制了值:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B
For i = 1 To LastRow 'loop from first row to last
    If UCase(ws.Cells(i, 2)) = "RIGHT" Then 'check if the word "Right" is in cell regardless of it being uppercase or lowercase
        ws.Range("D" & i & ":F" & i).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        ws.Cells(i, 3) = ws.Cells(i - 1, 3) 'get values from row above
        ws.Cells(i, 4) = ws.Cells(i - 1, 4)
        ws.Cells(i, 5) = ws.Cells(i - 1, 5)
    End If
Next i
End Sub

【讨论】:

  • 他可能还需要在这些位置插入单元格(刚刚离开他的帖子)
  • 谢谢,我明天上班试试这个 左边的柱子是挂在杆子上的织物。少数样品共用一根杆。右列是杆位置。由于织物加倍,左列比右列长。插入行使左右列相等。即:左列列出结构 1、2 和 3。右列列出位置 1、2 和 3。结构 1 和 2 共享一个位置。我需要右列来反映位置 1、1A 和 2。将右列中的单元格向下移动并添加数据将使列相等,并允许我按位置或按结构对文件进行排序。
  • 我不明白您要插入多少个单元格,当您插入一个单元格时,您希望其他单元格向右移动吗?我已经更新了我的答案,向您展示如何插入一个单元格,您需要修改它以添加您需要的尽可能多的单元格...
  • 非常感谢!我做了一些细微的修改,它是完美的。
  • @Carl,如果对您有帮助,请您接受我的回复作为答案吗?谢谢:)
猜你喜欢
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多