Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 仅当第二列中存在值时,如何从复制到另一张图纸的一列中获取值_Excel_Vba - Fatal编程技术网

Excel 仅当第二列中存在值时,如何从复制到另一张图纸的一列中获取值

Excel 仅当第二列中存在值时,如何从复制到另一张图纸的一列中获取值,excel,vba,Excel,Vba,这里有一个新功能,正在尝试从升级列表中找到自动创建工单和物料列表的解决方案。我想我可能需要为此编写一个VBA。 下面是一张类似于我们其中一张床单的表格。只有当c列中的值大于0时,我们才需要能够将a列中的值(CFM目标减少、嵌入式灯箱等)复制到另一个电子表格中 +--------------------------------------+--+----+------+ | Fire Rated Sealing | | | LF | +-------

这里有一个新功能,正在尝试从升级列表中找到自动创建工单和物料列表的解决方案。我想我可能需要为此编写一个VBA。 下面是一张类似于我们其中一张床单的表格。只有当c列中的值大于0时,我们才需要能够将a列中的值(CFM目标减少、嵌入式灯箱等)复制到另一个电子表格中

+--------------------------------------+--+----+------+
|          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
  • 选择相关的数据单元格,包括标题(A1:C12?)
  • 插入>透视表
  • 将“防火密封”拖到“行”部分 数据透视表的
  • 将“C列标题”拖到“值”部分 数据透视表的
  • 单击“防火密封”的过滤器图标 然后选择值过滤器>大于0

  • 如果你有一个公式不能满足你的需要,那么试着把它包含在你的问题中。这个公式中的列与上面的例子不符,但是这里有一个公式-=If(E53>0,C53,)至于“按原样”这是一个选项,但是我们更喜欢一个自动实现这一点的解决方案。我们每天对几个不同的人进行大约40次这样的操作,因此锁定以防止编辑的自动化解决方案是理想的解决方案。允许编辑将允许接收工单的人员可能对系统进行游戏。你看过vlookup吗?@Alanwage我不认为vlookup在这种情况下有什么帮助,因为它仍然会在未选择的值上留下空白。你能详细解释一下吗?@Dan,你在哪一行中出错了?也许您需要将名称
    “Sheet1”
    “Sheet2”
    更改为适合您的SheetNames?@Dan,您的值1,10,1,1,0,。。。我想它们在
    C列中。这是真的吗?我正要给你写一个关于错误的详细解释,但是在使用了新的代码更新之后,它工作了!但是,它没有继承C列中的值,但这是一个很好的开始!Excel不允许我们创建透视表,因为我们已将单元格合并到电子表格的这一部分。