[英]select a range to copy and paste in another cell if a condition is met
Dim word As Variant
Dim range As Variant
If cells(5, [6]) = "Bulk Density" Then
range = ("A3:K11")
For Each word In range
If word = "Moisture Content" Then
[M20] = word.Offset(0, 1)
Exit For
End If
Next
End If
End Sub
Hi im trying to select a range based on cell f5
.嗨,我正在尝试 select 基于单元格
f5
的范围。 And then if that word is met in f5
i want to select a certain range ( A3:K11
) where i can copy data from and move it to another cells.然后,如果在
f5
中遇到该词,我想 select 一定范围( A3:K11
),我可以从中复制数据并将其移动到另一个单元格。 For example if cells f5
contains "Bulk density" i then want to copy the moisture content value in the range of cells (which is not always in the same row) and then paste the value into M20
.例如,如果单元格
f5
包含“体积密度”,那么我想复制单元格范围内的水分含量值(并不总是在同一行中),然后将该值粘贴到M20
中。 The copy and paste of the value works when i put the range in automatically but when i want it select the range itself the word variable is always empty and im not sure why.当我自动放入范围时,值的复制和粘贴有效,但是当我想要它 select 范围本身时,单词变量始终为空,我不知道为什么。 Any help would be greatly appreicated thanks max
任何帮助将不胜感激,感谢max
Bulk Density...
).Bulk Density...
)。 The Code编码
Option Explicit
Sub writeValueConst()
Const CheckString As String = "Bulk Density"
Const CheckCellAddress As String = "F6"
Const Searchstring As String = "Moisture Content"
Const SearchRangeAddress As String = "F3:F11"
Const ColumnOffset As Long = 1
Const WriteCellAddress As String = "M20"
Dim cel As Range
If Range(CheckCellAddress).Value = CheckString Then
For Each cel In Range(SearchRangeAddress).Cells
If cel.Value = Searchstring Then
Range(WriteCellAddress).Value _
= cel.Offset(0, ColumnOffset).Value
Exit For
End If
Next cel
End If
End Sub
Sub writeValue(ByVal CheckString As String, _
ByVal CheckCellAddress As String, _
ByVal Searchstring As String, _
ByVal SearchRangeAddress As String, _
ByVal WriteCellAddress As String, _
Optional ByVal ColumnOffset As Long = 1)
Dim cel As Range
If Range(CheckCellAddress).Value = CheckString Then
For Each cel In Range(SearchRangeAddress).Cells
If cel.Value = Searchstring Then
Range(WriteCellAddress).Value _
= cel.Offset(0, ColumnOffset).Value
Exit For
End If
Next cel
End If
End Sub
Sub writeDensities()
Dim Series(1) As Variant
' If you add or remove, you have to adjust the previous number after Series.
Series(0) = Array("Bulk Density", "F6", "Moisture Content", _
"F3:F11", "M20", 1)
Series(1) = Array("Dry Density", "F8", "Degree of Compaction", _
"F3:F11", "M21", 1)
Dim j As Long
For j = 0 To UBound(Series)
writeValue Series(j)(0), Series(j)(1), Series(j)(2), _
Series(j)(3), Series(j)(4), Series(j)(5)
Next j
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.