Excel VBAmacros根据列中的文本将单元格的值复制并粘贴到某些单元格
我试图复制和粘贴文本值的Excel中基于文本比较一定数量的单元格。
请参阅下面的解释:
我有2栏A(空白)和B(有值)
macros后,这将是最终的结果:
在检测到果实列并将行数值粘贴到行A后,基本上是取其底部的单元格。请注意,在到达下一个单元格之后,它将取下一个(底部)单元格的值。 F123,F124等。
有人可以提供我的excel vba代码吗? 谢谢。
我不会使用VBA来解决这个问题。 我会input:
=IF(AND(LEFT(B2,1)="F",B2<>"Fruits"),B2,A1)
进入A2并复制下来。 这似乎给你所寻求的效果。
如果你真的想使用VBA,testing代码是:
Dim CellValue As String Dim RowCrnt As Integer Dim RowMax As Integer With Sheets("Sheet1") ' Replace Sheet1 by the name of your sheet RowMax = .Cells(Rows.Count, "B").End(xlUp).Row For RowCrnt = 2 To RowMax CellValue = .Cells(RowCrnt, 2).Value If Left(CellValue, 1) = "F" And CellValue <> "Fruits" Then .Cells(RowCrnt, 1).Value = CellValue Else .Cells(RowCrnt, 1).Value = .Cells(RowCrnt - 1, 1).Value End If Next End With
以下解释上述代码中可能对新手不清楚的方面。
macroslogging器几乎总是使用范围(“A5”)或范围(“A5:C10”)来表示范围。
似乎有几个命令(对不起,不记得是哪个),这种格式是强制性的,但对于大多数目的单元格(行,列)更方便。
如果要为表Sheet1中的“A5:C10”的范围中的每个数值添加1,下面显示了如何在单元格中执行此操作:
Dim CellValue as String Dim ColCrnt As Integer Dim RowCrnt As Integer With Sheets("Sheet1") For RowCrnt = 5 to 10 For ColCrnt = 1 to 3 ' "A" to "C" CellValue = .Cells(RowCrnt, ColCrnt).Value If IsNumeric(CellValue) Then .Cells(RowCrnt, ColCrnt).Value = CellValue + 1 End If Next Next End With
在工作表中访问单元格会有一定的时间损失,但是我更多地使用了CellValue,因为代码可能会因为太多的单元格引用而变得非常混乱。
注意:在“A5”列中先出现,但是在单元格(5,1)中,行先出现。
您可以使用单元格定义范围。 以下将活动页面的“A5:C10”设置为粗体:
Range(Cells(5,1), Cells(10,3)).Font.Bold = True
要解决活动工作表最后一列的列A:
Cells(Rows.Count,"A")
要解决行1的最后一列:
Cells(1,Columns.Count)
可以使用Ctrl + Up,Ctrl + Down,Ctrl + Left和Ctrl + Right从空单元格跳转到下一个单元格,并在所指示的方向上有一个值。 你可以在VBA中做同样的事情。 但更有用的是,您可以获得光标跳转到的行或列的值,而不必移动光标。
如果光标位于最后一行的B列,并按Ctrl +向上,则光标将跳转到列B中最后一行的值。下面将RowMax设置为活动工作表的行号:
RowMax = Cells(Rows.Count, "B").End(xlUp).Row
要获取第27行的最后一个使用列:
ColMax = Cells(27,Columns.Count).End(xlToRight).Column