中易网

这个EXCEL函数VBA怎么弄代码?求一个!

答案:3  悬赏:0  
解决时间 2021-01-11 01:07
  • 提问者网友:末路
  • 2021-01-10 20:39
这个EXCEL函数VBA怎么弄代码?求一个!
最佳答案
  • 二级知识专家网友:独行浪子会拥风
  • 2021-01-10 22:00
测试通过,确保正确运行的代码如下:
Option Explicit
Sub x()
    Dim i, j, n
    n = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To n
        If Cells(i, "A") = 1 Then
            For j = n To 1 Step -1
                If Cells(j, "C") = Cells(i, "B") Then Cells(j, "C").Delete (xlShiftUp)
            Next j
        End If
    Next i
End Sub追问不行哦,是不是我代码加错了?怎么把这个代码加到EXCEL的VBA里面呢追答在工作表标签(就是工作表名称)上按鼠标右键,选择“查看代码”,然后粘贴我以上所有内容即可。


如果你是删除部分内容,不删除单元格,那么代码应该这样写:
Option Explicit
Sub x()
    Dim i, j, n
    n = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To n
        If Cells(i, "A") = 1 Then
            For j = n To 1 Step -1
                Cells(j, "C") = Replace(Cells(j, "C"),Cells(i, "B"),"")
            Next j
        End If
    Next i
End Sub
全部回答
  • 1楼网友:三千妖杀
  • 2021-01-11 00:03
Sub 清除()
For i = 1 To [a65536].End(3).Row
    For k = 1 To [c65536].End(3).Row
        If Cells(i, 1) = 1 Then
            If Cells(k, 3) = Cells(i, 2) Then Cells(k, 3).Delete
        End If
    Next
Next
End Sub追问不行哦,是不是我代码加错了?怎么把这个代码加到EXCEL的VBA里面呢追答你要在哪个工作表中执行代码,就右击哪个工作表的标签名,在右键菜单中点“查看代码”,然后将以上代码复制粘贴到空白代码窗口中。追问

但你这公式,我打了1,没反应。。追答A列中输入数值后,依次点击“工具——宏——宏——点击【清除】——执行“。
图片中的实例看不到代码的执行效果。因为C列中没有与B1中的数据完成相同的。追问可以了,但是我问题是指的:C列包含B单元格的内容的删除,,而不是完全等于一模一样的才删除。。。要怎么改呢。。
  • 2楼网友:话散在刀尖上
  • 2021-01-10 23:19
Sub test()
    Dim i, j As Integer
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        If Range("A" & i) = 1 Then'这行的A就是判定是否等于1的列
            For j = 1 To ActiveSheet.UsedRange.Rows.Count
                If Range("C" & j).Value = Range("B" & i).Value Then Range("C" & j).Value = "" '这行的C就是要判定的列
            Next
        End If
    Next
End Sub追问不行哦,是不是我代码加错了?怎么把这个代码加到EXCEL的VBA里面呢追答按{Alt+F11}进入VBE,然后右键单击左侧工程资源管理器任意位置,选择插入→模块,然后回到你要操作的工作表按{Alt+F8}选则test执行追问可以了,但是我问题是指的:C列包含B单元格的内容的删除,是包含哦,而不是完全等于一模一样的才删除。。。要怎么改呢。。追答
把两个变量存成string类型,用instr函数查找字符串在另一字符串中的位置,如果返回0则说明不包含,返回其它值说明包含。用法:dim a ,b ,c as string
a="21"
b="1"
c="3"
instr(1,a,b)'值为2,1代表从第一个数字开始查找,返回2说明b在a里面
instr(1,a,c)'值为0,c不在a里面
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息