2013-09-30 34 views
-2

我目前正在做一些电子表格的数据输入,其中包含数百个条目,并希望自动化该过程,我对我希望它做什么有一个很好的想法,但对Excel或VBA。EXCEL:自动化电子表格数据输入

它背后的想法是,我在一列中有一个代码,在下一列中有另一个代码,它是前一列中值的唯一代码。举个例子:

Excel Example 1

因此,对于包含123列旁边将是“ABC”的每一个细胞。

我想要的一种解决方案是一个宏,它将在列A中存储每个单元格的值(或某种特定效果),然后逐渐下移以检查与存储的值相匹配的值一。如果找到匹配项,则宏将复制来自列B的代码,即存储单元格旁边的单元格,并将其复制到列B中位于匹配旁边的单元格中。

例:

Excel Example 2

它将存储在“123”中的值,工作的方式下A栏找到其他细胞匹配“123”,当它发现它们复制“ABC”进匹配旁边的列B单元格。

希望这是很容易理解,有人可以帮我想出一个解决方案,将使得整个过程容易得多的电子表格,根据白天和手动输入增长远抽出太多的时间

+2

询问代码的问题必须证明对所解决问题的最小理解。包括尝试解决方案,为什么他们没有工作,以及预期的结果。另请参阅:[Stack Overflow question checklist](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+0

看起来好像[= VLOOKUP](http://office.microsoft.com /en-us/excel-help/vlookup-HP005209335.aspx)可能会投放。 – pnuts

回答

1

试试这个宏:

Sub FillInTheBlanks() 
    Dim rA As Range 
    Dim rB As Range 
    Dim r As Range, rr As Range 
    Dim N As Long 
    Dim va As Variant 
    N = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rA = Range("A1:A" & N) 
    Set rB = rA.Offset(0, 1).Cells.SpecialCells(xlCellTypeBlanks) 
    If rB Is Nothing Then Exit Sub 
    For Each r In rB 
     va = r.Offset(0, -1).Value 
     For Each rr In rA 
      If rr.Value = va And rr.Offset(0, 1) <> "" Then 
       r.Value = rr.Offset(0, 1).Value 
      End If 
     Next rr 
    Next r 
End Sub 
+0

是啊,看起来工作!谢谢,我从几个小时的工作中解救出来,而我的老板咀嚼着我的头。 –

相关问题