选择每个第N行,Excel。替换为任何内容或原始单元格内容

时间:2015-07-06 18:45:19

标签: excel vba excel-vba excel-formula

我有一张Excel工作表,其中我的变量列在第E栏中,其值列在第G

我想测试E是否包含单词"text"(我的变量)。如果是,那么我想用G替换"This is my successful if statement text"列中的相应单元格。

如果没有 - 我希望单元格保持单独(excel中不可能)或保留原来的值(我认为问题是填充文本而不是数字)。

到目前为止,我已经尝试了

=if(e2="text", "Replace with this", G2)

以及

=if(e2="text", "replace with this", "")

top返回一个数字,而bottom返回一个空单元格,删除我在那里的内容。

有什么建议吗?我认为这可以用VB完成,但这不属于我的联盟。

3 个答案:

答案 0 :(得分:1)

解决这个问题的正确方法就是如此。

在H栏(或任何不包含任何信息的栏目)中放置公式

=IF(E2 = "text", "This is the true part", G2) and drag down.

这将测试E2的单词" text"然后用&#34替换;这是真的。"如果不满足条件,G2中的原始文本将被拉入新列。

一旦完成,所需的结果应该已经生效。然后,您可以复制该行并使用" Paste Special"并选择"值"从弹出菜单中粘贴新数据。选择值允许用户粘贴实际的字段数据,而不是生成它的公式!

答案 1 :(得分:0)

试试这个。

Sub g()

Dim ws As Worksheet
Dim lastRow As Long

Set ws = ThisWorkbook.Worksheets("Sheet1") 'change sheet name as applicable
lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row

For i = 1 To lastRow
With ws
If .Cells(i, 5) = "text" Then
.Cells(i, 7) = "The text you want"
End If
End With
Next

End Sub

答案 2 :(得分:0)

您似乎正在尝试从E列中获取要解析(剪切)并放置在G列中的四个值。

通过在单元格中创建四个解析{= mid(e2,16,10),= mid(e3,9,15),= mid(e4,5,3),= mid(e5,10,22)} G2,G3,G4和G5分别可以选择四个G单元格的块(G2:G5),选择右下方的块,然后将其向下拖动整个文件。

或者,您可以使用模数学和case语句循环遍历文件并在每个点执行所需的函数:

myCount = 0
myLoop = 0
endMyLoop = false
range("G2").activate
do
     myLoop = myCount mod 4
     select case myLoop
         case 0 
               code for description_tag
         case 1
               code for title_tag
         case 2
               code for headline
         case 3
               code for text
     end select
     if activecell.value = "" then endMyLoop = true
loop until (endMyLoop = true)

你说E中的每四行都是文本。因此,它应该只是每隔四行复制一个公式或每四次迭代执行一次你的函数(模数返回G列中的余数)。

另一个选择是嵌套你的if循环(= if(e2 =" text","它的文字",if(e2 =" title_tag" ,"它的标题",如果(e2 ="标题","标题","其描述"))))到帐户对于四种不同的选择。当然,您可以使用您实际想要执行的功能填充文本。