Excel 仅当第二列中存在值时,如何从复制到另一张图纸的一列中获取值
这里有一个新功能,正在尝试从升级列表中找到自动创建工单和物料列表的解决方案。我想我可能需要为此编写一个VBA。 下面是一张类似于我们其中一张床单的表格。只有当c列中的值大于0时,我们才需要能够将a列中的值(CFM目标减少、嵌入式灯箱等)复制到另一个电子表格中Excel 仅当第二列中存在值时,如何从复制到另一张图纸的一列中获取值,excel,vba,Excel,Vba,这里有一个新功能,正在尝试从升级列表中找到自动创建工单和物料列表的解决方案。我想我可能需要为此编写一个VBA。 下面是一张类似于我们其中一张床单的表格。只有当c列中的值大于0时,我们才需要能够将a列中的值(CFM目标减少、嵌入式灯箱等)复制到另一个电子表格中 +--------------------------------------+--+----+------+ | Fire Rated Sealing | | | LF | +-------
+--------------------------------------+--+----+------+
| Fire Rated Sealing | | | LF |
+--------------------------------------+--+----+------+
| CFM Target Reduction | | 1 | CFM |
| Recessed Light Box | | 10 | EA |
| Seal Ducts at Plenum | | 1 | Duct |
| Attic Access Mate- Magnetic | | 1 | EA |
| Attic Tent for Attic Stairs (zipper) | | 0 | EA |
| Attic Insulation- Blown in Cellulose | | 0 | SF |
| Batt Insulation- Fiberglass | | 0 | SF |
| Insulate Condensent Line | | 0 | LF |
| Knee wall: (Insul. w/ Fiberglass) | | 2 | SF |
| Knee wall: (Seal w/ Foamboard) | | 4 | SF |
+--------------------------------------+--+----+------+
我用IF函数试过了,但结果是-
╔════════════════════════════════════╗
║ 0 ║
╠════════════════════════════════════╣
║ CFM Target Reduction ║
║ Recessed Light Box ║
║ Seal Ducts at Plenum ║
║ Attic Access Mate- Magnetic ║
║ 0 ║
║ 0 ║
║ 0 ║
║ 0 ║
║ Knee wall: (Insul. w/ Fiberglass) ║
║ Knee wall: (Seal w/ Foamboard) ║
╚════════════════════════════════════╝
这是没有吸引力的,不符合我们的需要。我们需要的是只将A列的值返回到另一个不带零的电子表格。理想情况下,我们还可以查询工单上每个项目的简短描述。
感谢您的帮助 您可以使用以下简单宏:
Sub test()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lastrow As Long
Dim i As Long, j As Long
'you can change Sheet1 and Sheet2 to your sheet names'
Set sh1 = ThisWorkbook.Worksheets("Sheet1")
Set sh2 = ThisWorkbook.Worksheets("Sheet2")
'determining last row in Sheet1 in column A (I suppose that your data in column A)'
lastrow = sh1.Range("A" & sh1.Rows.Count).End(xlUp).Row
'I suppose that in Sheet2 your data will starts from row №2'
j = 2
'I suppose that in Sheet1 your data will starts from row №2 too'
For i = 2 To lastrow
'if in Sheet1 in column C there is value greater 0, than copy'
If sh1.Range("C" & i) > 0 Then
'copy data from sheet1 column A to sheet2 column A'
sh2.Range("A" & j) = sh1.Range("A" & i)
j = j + 1
End If
Next i
End Sub
如果你有一个公式不能满足你的需要,那么试着把它包含在你的问题中。这个公式中的列与上面的例子不符,但是这里有一个公式-=If(E53>0,C53,)至于“按原样”这是一个选项,但是我们更喜欢一个自动实现这一点的解决方案。我们每天对几个不同的人进行大约40次这样的操作,因此锁定以防止编辑的自动化解决方案是理想的解决方案。允许编辑将允许接收工单的人员可能对系统进行游戏。你看过vlookup吗?@Alanwage我不认为vlookup在这种情况下有什么帮助,因为它仍然会在未选择的值上留下空白。你能详细解释一下吗?@Dan,你在哪一行中出错了?也许您需要将名称
“Sheet1”
和“Sheet2”
更改为适合您的SheetNames?@Dan,您的值1,10,1,1,0,。。。我想它们在C列中。这是真的吗?我正要给你写一个关于错误的详细解释,但是在使用了新的代码更新之后,它工作了!但是,它没有继承C列中的值,但这是一个很好的开始!Excel不允许我们创建透视表,因为我们已将单元格合并到电子表格的这一部分。