簡體   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