检查单元格是否包含内容,如果是,请在不同的单元格中输入内容

时间:2015-05-26 20:02:24

标签: excel-vba vbscript vba excel

我发现了一个VBScript,它在Excel 2013中打开了某个电子表格,添加了一个列并在列的第一行中添加了一个名称。我正在寻找是否有人可以帮助我使用可以执行以下操作的脚本:

脚本应从B2开始检查B列中的所有单元格。

  • 如果B2里面有东西,那就放一个" 1" (无引号)G2
  • 同样的事情,那么如果B3中有东西,那就放一个" 1"在G3
  • 依此类推,直到它到达并清空。

一旦它击中空单元格,脚本就完成了。

我在下面有以下脚本。我不知道从哪里开始,我尝试了一些不同的东西,但得到错误。这是我试图说的最后一次修订"如果(b2小于或大于空白,则J2 = = 1),但它可能不是正确的格式。

Const xlToRight = -4161 
const xlColumns = &H2 
const xlLinear = -4132 
const xlDay = 1 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
Set objWB = objExcel.Workbooks.Open("T:\Science Data\SampleFile.xls") 
Set objSheet = objwb.Sheets("sheet") 
objSheet.Columns("J:J").Insert xlToRight 
objSheet.Cells(1, 10).Value = "GetBestMatch" 
objSheet.Cells(2, 10).Value = 1
If objSheet.Cells(2,2).Value <> "" Then objSheet.Cells(2, 10).Value = 1 
set Range = objSheet.Range("J1:J" & objSheet.UsedRange.Rows.Count) 
Range.DataSeries xlColumns, xlLinear,xlDay, 1, , False 
objwb.Save 
objwb.close
objExcel.quit

非常感谢您的建议。我对脚本进行了更改。删除了objSheet.Cells(2,10).Value = 1行(以粗体突出显示),因为它更像是重复。我不确定我是否可以在下面加入以下代码。你给我的线很好,我可以重复键入相同的行,每行的单元格值不同。

想要查看是否在您推荐的If语句中,它可以添加一个语句来继续检查B行。例如,检查B3是否有数据,如果B3有数据,则使J3为1,然后是B4,依此类推,然后一旦遇到空B单元,就停止向相应的J行添加1。我无法使用你的If语句进行任何操作,所以我搜索并尝试了一个我发现的Do语句,但对它进行了一些更改(如下)。

希望下面的代码有点正确。我尝试过,但它没有填写任何东西。我试图检查B2数据,如果B2为空,则移动8个单元格到J2,添加1,然后向下移动一行,然后返回到B3,然后再从那里开始Do语句。

Sub Test2()
  Range("B2").Select
  Do Until IsEmpty(ActiveCell)
    ActiveCell.Offset(0,8).select
    ActiveCell.value = 1
    ActiveCell.Offset(1,-8).select
  Loop
End Sub

1 个答案:

答案 0 :(得分:0)

if(B2<>"") then(J2="1") 

在上面的行B2J2是(未定义的)变量,当你真的想要引用单元格B2和J2时。对后者使用这样的东西:

If objSheet.Range("B2").Value <> "" Then objSheet.Range("J2").Value = 1

但请注意,Range("B2")可能与活动单元格相关。我发现使用Cells集合通常更安全:

If objSheet.Cells(2, 2).Value <> "" Then objSheet.Cells(2, 10).Value = 1

另外,这个:

set Range = objSheet.Range("J1:J2"&objSheet.UsedRange.Rows.Count)

应该看起来像这样:

set Range = objSheet.Range("J1:J" & objSheet.UsedRange.Rows.Count)

话虽如此,我强烈建议您沉浸在一本关于VBA的好书中。一旦你很好地理解了VBA的工作原理,using it from VBScript就不会太难了。