程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将公式应用于可变范围大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决将公式应用于可变范围?

开发过程中遇到将公式应用于可变范围的问题如何解决?下面主要结合日常开发的经验,给出你关于将公式应用于可变范围的解决方法建议,希望对你解决将公式应用于可变范围有所启发或帮助;

我想将公式应用于给定范围。
但是,列数不是固定的,会有所不同。

截图以可视化我在做什么。

屏幕截图 1:我希望代码从 C 列开始自动选择,并在下一张图像中应用公式。随着越来越多的学生尝试测验,列的数量会有所不同。

将公式应用于可变范围

屏幕截图 2:这是我希望应用于所选范围的公式。之后,我就可以逐个循环浏览 B31 及以下的教师名单,复制每个教师学生的答案范围并将它们粘贴到包含我之前提到的第一组结果的表 3-6 上。

将公式应用于可变范围

Sub obtainsecond()
    Sheets("Question_answers").Select
    Range("C31").Select
    ActiveCell.Formula2R1C1 = _
      "=FILTER(R[-29]C:R[-4]C[3],ISNUMBER(SEARCH(R[-1]C,R[-30]C:R[-30]C[3])))"
End Sub

解决方法

解决问题的一种方法。

此方法假定第 1 行的最后一列是包含学生答案的最后一列。

逻辑: 我检查最后一列并获取单元格引用(即 $H1)。然后我只提取列字母。我把列字母放在你要扩展的公式中。

代码:

Option Explicit

Sub obtainsecond()

Dim QA_ws As Worksheet 'Declare the worksheet as a variable
Set QA_ws = ActiveWorkbook.Worksheets("Question_answers") 'Decide which worksheet to declare

Dim lCol As Long
Dim LastColumnLetter As String
Dim lColRange As Range
    
    QA_ws.Activate 'Go to the worksheet
    lCol = QA_ws.Cells(1,Columns.Count).End(xlToLeft).Column 'Find the last column in the worksheet by checking in row 1
    
    Set lColRange = QA_ws.Cells(1,lCol) 'Set last column to get cell reference,i.e. $H1
    'MsgBox lColRange.Address(RowAbsolute:=False) ' $H1
    
    'https://www.exceltip.com/tips/how-to-convert-excel-column-number-to-letter.html (Formula to extract letter: =SUBSTITUTE(ADDRESS(1,B2,4),1,””))
    LastColumnLetter = WorksheetFunction.Substitute(lColRange.Address(RowAbsolute:=False),"1","") 'Get column letter
    LastColumnLetter = Replace(LastColumnLetter,"$","") 'Remove prefix
    
    QA_ws.Range("C31").Formula2 = "=FILTER(C2:" & LastColumnLetter & "27,ISNUMBER(SEARCH(C30,C1:" & LastColumnLetter & "1)))" 'Use relative formula to print in cell (original formula: =FILTER(C2:F27,C1:F1))))

End Sub

大佬总结

以上是大佬教程为你收集整理的将公式应用于可变范围全部内容,希望文章能够帮你解决将公式应用于可变范围所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: