我有一张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完成,但这不属于我的联盟。
答案 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 ="标题","标题","其描述"))))到帐户对于四种不同的选择。当然,您可以使用您实际想要执行的功能填充文本。