大佬教程收集整理的这篇文章主要介绍了将公式应用于可变范围,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将公式应用于给定范围。
但是,列数不是固定的,会有所不同。
截图以可视化我在做什么。
屏幕截图 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,请注明来意。