【问题标题】:Extract Year from the adjacent column从相邻列中提取年份
【发布时间】:2015-08-23 12:58:45
【问题描述】:

我有 4 列在使用 I (File_Date), J(File_Year), K(Resol_Date), L(Resol_Year) 到目前为止,我有以下代码不起作用..

Thisworkbook.Sheets(3).FormulaR1C1 = "=YEAR(RC[-1])"
Range("J2").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",YEAR(RC[-1]))"
Range("J2").Select

日期已经给出,所以我要做的就是从第 I 列到第 I 列,从第 K 列到第 L 列,从第 2 行到最后一行提取年份,这是由不同的程序预先确定的

Dim lastRow As Long
Dim rng As Range

Set rng = ThisWorkbook.Sheets(2).Cells

lastRow = rng.Find(What:="*", After:=rng.Cells(1), Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row

任何帮助将不胜感激

【问题讨论】:

  • 你试过什么?您需要向我们展示一些示例数据以及您尝试过的东西,然后我们可以提供帮助。
  • 你为什么要一个宏/vba,一个非常简单的 Excel 公式就可以完成这项工作?
  • 我知道这可以用一个简单的 =year () 公式来完成,但由于整个 File_Date 列被格式化为日期,当我拉一年时,它会提取像“1905”这样的奇怪年份。此外,由于它具有 200 多个文件的重复性,我正在尝试将其自动化。谢谢..
  • 我已在我的答案中添加了 VBA 解决方案

标签: vba excel extract


【解决方案1】:

您可以使用工作表公式完成此操作,无需 VBA。

在J列中,输入下面的公式,并向下复制。

=YEAR(I:I)

VBA 代码:

要在所有行上使用 VBA 执行此操作,然后试试这个:

Dim lLastRow As Long

lLastRow = Range("I" & ActiveSheet.Rows.Count).End(xlUp).Row

Range("J1:J" & lLastRow).Formula = "=IF(ISBLANK(I:I),"""",YEAR(I:I))"

希望对你有帮助

【讨论】:

  • 谢谢,我知道这一点,但由于它的重复性,我想把它作为宏
  • @BLkrn:我添加了一个 VBA 解决方案,可以在所有行被填充时工作
【解决方案2】:

您是在寻找整个代码还是只是提取年份的语句?如果您将以下行集成到现有宏中,它应该可以工作。

activecell.value=Year(activecell.offset(0,-1).value)

【讨论】:

  • 这不是说只有活动单元格才会使用代码吗?
  • @BLkrn:是的,因此您需要将该代码应用于整个范围。或使用您复制下来的公式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
相关资源
最近更新 更多