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