繁体   English   中英

在Excel中使用VBA宏将文本插入空白行

[英]Inserting text to blank row using vba macro in excel

我有说超过5000行和10列的数据。 我想根据列条件向行添加文本。

    A              B               C            D
   fname          lname         state        clustername
1.  ram           giri            NCE         ...  
2. philips        sohia           MAD         ...
3. harish        Gabari           NCE         ....

基于列状态,对于NCE,必须将群集名称“ nce.net”分配给D列(群集名称),对于MAD,将群集名称“ muc.net”分配给第2行。

你能帮我吗

这是我的代码:

dim emptyrow as string
row_number = 1
lastRow = Cells(Rows.Count, "D").End(xlUp).Row
state = sheets("sheet1").rows("C" & row_number)
for each cell in selection
 if instr(state, "NCE") = true then
    Range(Cells(emptyrow, "D").Value = Array("nce.net")
 end if
next emptyrow

你能帮我一下吗。

为什么不是一个简单的公式

D1并向下复制

=IF(C1="NCE","nce.net",IF(C1="MAD","muc.net","No match"))

用代码做同样的事情

Sub Simple()
Dim rng1 As Range
Set rng1 = Range([c1], Cells(Rows.Count, "C").End(xlUp))
With rng1.Offset(0, 1)
    .FormulaR1C1 = "=IF(RC[-1]=""NCE"",""nce.net"",IF(RC[-1]=""MAD"",""muc.net"",""No match""))"
    .Value = .Value
End With
End Sub

您可以在单独的工作表中创建一个包含唯一状态和集群名称的引用表,然后使用=VLOOKUP()函数将集群名称拉入原始表中...只要状态与集群之间存在1:1关系...即使是多个状态的1个群集也可以工作。 这样可以避免硬编码,并且如果群集名称发生更改,您可以快速做出反应。

例:

在Sheet2中列出所有国家及其在Sheet1中相关的群集名称,如下图所示,在群集名称列的第一行中输入= VLOOKUP(...),并向下复制所有行

在此处输入图片说明

当然,您可能只希望有值,而在群集列中不希望有公式。 那么您可以在输入=VLOOKUP(...)公式后,通过复制然后粘贴为群集列的值,将公式转换为值。

或者,例如,如果您已经定义了很多集群名称,并且只想在集群名称为空的行上工作,则可以

  1. 筛选空白集群名称,然后仅在此处插入=VLOOKUP(...)
  2. 用一小段代码

     Sub DoCluster() Dim R As Range, S As Integer, C As Integer, Idx As Integer Set R = ActiveSheet.[A2] ' top left cell of table S = 3 ' column index of State column C = 4 ' column index of Clustername column Idx = 1 ' start at 1st row within range ' run a loop across all rows, stop if 1st column gets blank Do While R(Idx, 1) <> "" ' work only on rows wher cluster not yet set If R(Idx, C) = "" Then ' now this isn't really good ... try to avoid hardcoding BY ANY MEANS Select Case R(Idx, 3) Case "NCE" R(Idx, 4) = "nce.net" Case "MAD" R(Idx, 4) = "muc.net" ' insert other cases here as per need ' ... ' trap undefined cases Case Else R(Idx, 4) = "undefined" End Select End If Idx = Idx + 1 Loop End Sub 

我个人根本不喜欢这种硬编码,我宁愿从表中获取集群名称……因此对我而言,除非整个任务比所描述的要复杂得多,否则就无需编写代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM