Excel 检查单元格是否有内容,如果有,请在其他单元格中输入内容

Excel 检查单元格是否有内容,如果有,请在其他单元格中输入内容,excel,vbscript,vba,Excel,Vbscript,Vba,我发现了一个VBScript,它可以在Excel 2013中打开某个电子表格,添加一列并在列的第一行中输入名称。我想看看是否有人能帮我编写一个脚本,可以完成以下任务: 脚本应检查B列中从B2开始的所有单元格 如果B2中有内容,则在G2中加上“1”(无引号) 同样的道理,如果B3中有东西,在G3中加一个“1” 等等,直到它到达并清空单元格 一旦命中空单元格,脚本就完成了 我有下面的脚本。我不知道从哪里开始,我尝试了一些不同的方法,但都出现了错误。这是最后一次修订,我只是想说“如果(b2小于或大

我发现了一个VBScript,它可以在Excel 2013中打开某个电子表格,添加一列并在列的第一行中输入名称。我想看看是否有人能帮我编写一个脚本,可以完成以下任务:

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

  • 如果B2中有内容,则在G2中加上“1”(无引号)
  • 同样的道理,如果B3中有东西,在G3中加一个“1”
  • 等等,直到它到达并清空单元格
一旦命中空单元格,脚本就完成了

我有下面的脚本。我不知道从哪里开始,我尝试了一些不同的方法,但都出现了错误。这是最后一次修订,我只是想说“如果(b2小于或大于空白,那么J2等于1),但它可能不是正确的格式

constxltoright=-4161
常量xlColumns=&H2
常数xlLinear=-4132
常数xlDay=1
设置objExcel=CreateObject(“Excel.Application”)
objExcel.Visible=True
设置objWB=objExcel.Workbooks.Open(“T:\Science Data\SampleFile.xls”)
设置objSheet=objwb.Sheets(“工作表”)
对象表列(“J:J”)。插入xlToRight
objSheet.Cells(1,10).Value=“GetBestMatch”
objSheet.Cells(2,10).Value=1
如果objSheet.Cells(2,2).Value为“”,则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行添加。我无法使用你的if语句所以我搜索并尝试了一个我找到的
Do
语句,但对它做了一些更改(如下)

希望下面的代码是正确的。我试过了,但没有填充任何内容。我试图检查B2的数据,并将8个单元格移到J2。如果B2为空,添加1,然后向下一行,返回8到B3,然后从那里再次启动
Do
语句

子测试2()
范围(“B2”)。选择
直到IsEmpty(ActiveCell)为止
ActiveCell.Offset(0,8)。选择
ActiveCell.value=1
ActiveCell.Offset(1,-8)。选择
环
端接头
但是,请注意,
范围(“B2”)
可能与活动单元格相关。我发现使用
单元格
集合通常更安全:

If objSheet.Cells(2, 2).Value <> "" Then objSheet.Cells(2, 10).Value = 1
应该是这样的:

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

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

因此,不是一个你提供需求,其他人为你编写代码的地方。向我们展示你迄今为止所做的尝试(你的代码)并解释哪些不符合预期,我们将帮助您改进/修复代码。抱歉@AnsgarWiechers,我似乎无法将其粘贴到保留原始格式的位置,因此看起来像一个大段落。请回答您的问题,而不是发布相关信息(尤其是代码)在comments.done中,我仍在学习该站点..newb~>Test2中的代码看起来不错,但它是VBA代码,而不是VBScript。请看我的。
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)