Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-代码插入的公式未计算_Excel_Vba_Formula - Fatal编程技术网

Excel VBA-代码插入的公式未计算

Excel VBA-代码插入的公式未计算,excel,vba,formula,Excel,Vba,Formula,晚上好, 我正在与我的代码作斗争。主要问题是无法自动计算公式。 公式由VBA插入(左函数) 我尝试了多种解决方案,但都不起作用: 打开自动计算公式 我试过ActiveCell.NumberFormat=“General”-不起作用 我试过应用程序。易失性-不起作用 将文本记录到列中,并将单元格分配到“常规”(有效,但在我将代码放入脚本时无效) 你能帮我解决问题吗 Sub QualityCheck() 'załóż filtry, wyszukaj nagłowka "vendor" i

晚上好,

我正在与我的代码作斗争。主要问题是无法自动计算公式。 公式由VBA插入(左函数) 我尝试了多种解决方案,但都不起作用:

  • 打开自动计算公式
  • 我试过ActiveCell.NumberFormat=“General”-不起作用
  • 我试过应用程序。易失性-不起作用
  • 将文本记录到列中,并将单元格分配到“常规”(有效,但在我将代码放入脚本时无效)
你能帮我解决问题吗

Sub QualityCheck()


'załóż filtry, wyszukaj nagłowka "vendor" i posortuj

    Rows("1:1").Select
    Range("F1").Activate
    Selection.AutoFilter
    Selection.Find(What:="Vendor", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Worksheets(1).AutoFilter.Sort.SortFields.Clear
    Worksheets(1).AutoFilter.Sort.SortFields.Add Key:=Range _
        ("K1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With Worksheets(1).AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

'statystyki

    'znajdz wszystkie te same numery vendora i ostatni aktywny ROW
    i = 2
    r = 2
    koniec = Range("K" & Rows.Count).End(xlUp).Row

    Columns("N:N").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    Do Until Range("K" & r) < koniec

            Do Until Range("K" & i) <> Range("K" & i + 1)

                    Range("N" & i).Select
                    Formula = "=left(M" & i & ";1)"
                    Range("N" & i).Formula = Formula  'OFFSET DODAC ALBO COS

                    ActiveCell.NumberFormat = "General"

                i = i + 1 'i to bedzie nasz ostatni row
            Loop

        r = r + 1
    Loop

    Selection.TextToColumns Destination:=Range("N1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True


End Sub
Sub-QualityCheck()
“załóżfirtry,wyszukaj nagłowka”供应商“i posortuj
行(“1:1”)。选择
范围(“F1”)。激活
自动筛选
Selection.Find(What:=“Vendor”,After:=ActiveCell,LookIn:=xlFormulas_
查看:=xlother,搜索顺序:=xlByRows,搜索方向:=xlNext_
匹配案例:=False,搜索格式:=False)。激活
工作表(1).AutoFilter.Sort.SortFields.Clear
工作表(1).AutoFilter.Sort.SortFields.Add Key:=范围_
(“K1”),SortOn:=xlSortOnValues,顺序:=xlAscending,数据选项:=_
xlSortNormal
使用工作表(1)。自动筛选。排序
.Header=xlYes
.MatchCase=False
.方向=xlTopToBottom
.SortMethod=xl拼音
.申请
以
“斯塔蒂斯基
“znajdz wszystkie和ostatni aktywny ROW的同一个数字
i=2
r=2
koniec=Range(“K”和Rows.Count).End(xlUp).Row
列(“N:N”)。选择
选择。插入Shift:=xlToRight,CopyOrigin:=xlFormatFromLeftOrAbove
直到范围(“K”和r)小于koniec
Do直到范围(“K”和i)范围(“K”和i+1)
范围(“N”和i)。选择
公式=“=左(M”&i&“1”)
范围(“N”和i)。公式=公式“偏移DODAC ALBO COS”
ActiveCell.NumberFormat=“常规”
i=i+1’i至贝兹·纳斯兹·奥斯塔尼街
环
r=r+1
环
Selection.TextToColumns目标:=范围(“N1”),数据类型:=xlDelimited_
TextQualifier:=xlDoubleQuote,continuedDelimiter:=False,Tab:=False_
分号:=False,逗号:=False,空格:=False,其他:=False,FieldInfo_
:=数组(1,1),TrailingMinusNumbers:=真
端接头
尝试更改

Range("N" & i).Select
Formula = "=left(M" & i & ";1)"
Range("N" & i).Formula = Formula 

我怀疑问题在于您使用了
而不是
,用于分离
函数的参数

值得注意的是,您正在以一种循环的方式设置公式,将其设置为变量,然后将其设置为公式,顺便说一句,这并不是声明的。将
Option Explicit
添加到顶部有助于捕获许多错误,如拼写错误的变量名,而且不会造成真正的伤害


另一方面,学习如何避免select并不是一个坏主意,因为它会带来自身的问题。请参见

谢谢您的反馈。很高兴这个解决方案对你有效
Range("N" & i).Formula = "=left(M" & i & ",1)"