[英]Find specific cells, change value of adjacent cell, value depends on location (Excel for Mac, 15.6)
这是我在这里的第一篇文章,我知道我对此表达得很差。
我正在尝试在日期列中查找包含特定短语的单元格。 这句话标志着本节的开始。 然后,我想说明从每个部分中的第一个日期到该部分中其他日期所经过的天数。 返回的值应显示在相邻列中。 以下是这些列的示例。
我在第二列中使用以下公式:
=A15-$A$15
然后将其向下拖动到相关部分的单元格中。 我正在尝试使此过程自动化。
我在此站点上找到了此代码,并对其进行了一些更改以获取此代码:
For Each cCell In Range("A1,A900")
cCell.Select
If ActiveCell.Value = "Phrase" Then
ActiveCell.Offset(1, 1).Value = "-"
End If
Next cCell
因此,我的难题是在“第二价值”领域说些什么。 我不知何故需要获取每个部分,以减去每个部分的第一个日期(“短语”下的日期)。
另一个挑战是复制第一个相邻的已更改的单元格,然后将special粘贴到下面的单元格中,但是在出现下一个“短语”时停止。
我将尽我所能。 谢谢。
我认为可以很公平地说您的问题在解决此问题上并没有付出太多努力,并且代码片段只是在“短语”单元格旁边放置一个破折号。 但是,对于更广泛的读者来说,这个问题很有趣,因为它突出显示了自动执行Excel击键任务与编写代码以处理数据,然后将其写入Excel工作表之间的区别。 两者都使用VBA,但前者只是按键的编程记录,而后者是算法解决方案。
您问题中的诉说词是: 我在第二列中使用此公式...,然后将其向下拖动到相关部分的单元格中。 我正在尝试使此过程自动化 。 可以通过使用VBA来复制一堆工作表函数来做到这一点,但这很麻烦,而且可能变得复杂。 我将让其他人回答,因为他们在回答问题上需要比在问题上花费更多的时间(我不做规矩之一!)。
另一方面,如果您不尝试自动执行击键,而转向VBA进行数据处理,那么问题将变得非常琐碎。 这是一个很好的例子,说明VBA仅用几行就可以解决Excel函数可能需要页面处理且可能不可靠的问题。
因此,这是作为VBA解决方案的代码。 它需要添加一些数据检查行来处理空白单元格,非日期等,但是我将把该任务交给您:
Dim ws As Worksheet
Dim firstCell As Range
Dim lastCell As Range
Dim dataCells As Range
Dim v As Variant
Dim output() As Variant
Dim r As Long
Dim refDate As Long
'Define the range to be worked
Set ws = ThisWorkbook.Worksheets("Sheet1") 'amend as required
Set firstCell = ws.Range("A1") 'amend as required
Set lastCell = ws.Cells(ws.Rows.Count, "A").End(xlUp) 'amend as required
Set dataCells = ws.Range(firstCell, lastCell)
'Read the values and size the output array
v = dataCells.Value2 'use Value2 to avoid date format issues
ReDim output(1 To UBound(v, 1), 1 To 1)
'Loop through the values, resetting the reference date on each "Phrase"
For r = 1 To UBound(v, 1)
If v(r, 1) = "Phrase" Then
output(r, 1) = "-"
refDate = v(r + 1, 1)
Else
output(r, 1) = v(r, 1) - refDate
End If
Next
'Write output into next column
dataCells.Offset(, 1).Value = output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.