【问题标题】:VBA - Enter a formula into all active rows of the current column (when you don't know the column letter, or if the column changes)VBA - 在当前列的所有活动行中输入公式(当您不知道列字母或列更改时)
【发布时间】:2015-04-24 20:00:19
【问题描述】:

大家好,这是我的第一篇文章,我想知道您是否可以帮助我。

我想编写一个宏/脚本,允许我根据我选择的列将公式放入当前选择的右侧的列(对于当前列的所有活动行) .我遇到的问题是我并不总是知道当前的列字母(因为我的选择从工作表更改为工作表)。

举个例子: 我的一个专栏目前包含日期,但日期以不同的格式输入,有些用“。”分隔,有些用“-”分隔,有些用空格等等。我有一个公式可以处理这个问题,所以我需要将此公式放在所选列(包含日期)右侧的列中。

当我指定列字母时,我已经能够做到这一点,但如果它改变了,就不行。

你能帮忙吗?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试一试,

    Sub SomethingNeat()
        Dim rng As Range, x
        x = Selection.Column
        On Error Resume Next
        Set rng = Columns(x).SpecialCells(xlCellTypeConstants, 23)
        If Not rng Is Nothing Then rng.Offset(, 1) = "'=MyFormula"
    End Sub
    

    【讨论】:

    • 伙计们感谢大家的帮助,但“Davesexcel”,你就是生意!您的建议很有效。
    【解决方案2】:

    你可以使用ActiveCell.Offset(0,1).Value = Variable

    这意味着无论您当前的单元格是什么,您都可以移动并“选择”以将值放入您已激活的单元格的右侧单元格。您可以使用循环移动选择。

    Do
        Workbooks("Yur workbook name").Worksheets(1).Range(Adress you want to start adding).Offset(0, 1).formula = "=FORMULA"
    
        i = i + 1
        ActiveCell.Offset(1, 0).Activate
    Loop While i <= max_row
    

    编辑:第二次

    将公式放入单元格中,比如说 C1

    'Select a range 
    Set take = Worksheets(1).Range("C1")
    take.Copy 'copy the formula
    
    Worksheets(1).Paste Destination:=Worksheets(1).Range("B1:B10") 
    

    它会在你想要的时候复制你的函数

    【讨论】:

    • 您可以结合使用 .Formula 的第一个解决方案中所说的相同公式将 2 种方法购买选择一个范围并将该范围内的所有单元格放入 .Formula
    • 我不认为您需要激活单元格,为什么不直接使用 Range(address).formula=sFormula ?见SO 10714251: How to avoid using SELECT in excel-vba-macros
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多