提取行位置以用作参考
我使用这篇文章中的build议填充了表单中的空白单元格的位置。 所以我有一个列A填写以下格式的位置
$X$1
或$X2:$X$4
。
我想要做的就是使用上面解释的那些行数来填充一个单独的列。 我想使用行号作为填充列的参考。 所以B列看起来像
=$B$1
或=$B$2:$B$4
(以1和2-4作为参考呼叫的行号)
两栏都引用不同的表格,所以请原谅任何列名称。
我不确定这是否需要VBA,或者只要使用一个公式就可以逃脱,我期望VBA能够满足所需的特性。 我已经看过这样和这个post。 但是,这些都不能完全涵盖我所寻找的东西。 特别是因为我想要expression所有的内容在$B$2:$B$4
情况下。
我对如何解决这个问题的直觉告诉我,从列Aparsing第一个数字的string,然后检查它是否是string的结尾。 如果是,则将其填充到填充列B的引用,如果不是,则find第二个数字并遍历一个填充单元格的循环(在这种情况下,希望将所有内容保留在一个单元格中)尊敬。
即
=$B2
=$B3
=$B4
我的问题是如何去做这件事? 如何parsingstring? 如何生成将通过必要步骤的循环? 如使用数字作为参考,从不同的列中提取信息并将其整齐地input另一列。
如果(例如)你有一个地址$ X2:$ X $ 4那么
Dim rng As Range Set rng = yourSheetReference.Range("$X2:$X$4")
如果你想映射到相同的行,但列B然后
Set rng = rng.Entirerow.Columns(2)
会做到这一点。 注意:从你的问题来看,你是不是映射X >> B或B >> X。
一旦你有你想要的范围,你可以循环它:
For Each c in rng.Cells 'do something with cell "c" next c
像这样的东西应该为你工作:
Sub Tester() Dim shtSrc As Worksheet, c As Range, rng As Range, c2, v, sep Set shtSrc = ThisWorkbook.Worksheets("Sheet1") '<< source data sheet Set c = ActiveSheet.Range("A2") '<<range addresses start here 'process addresses until ColA is empty Do While c.Value <> "" 'translate range to (eg) Column X Set rng = shtSrc.Range(c.Value).EntireRow.Columns(24) sep = "" v = "" 'build the value from the range For Each c2 In rng.Cells v = v & sep & c2.Value sep = vbLf Next c2 c.Offset(0, 1) = v '<< populate in colB Loop End Sub
试试这个代码:
Sub Test() Dim fRng As Range ' the cell that has the formula Set fRng = Worksheets("sheet1").Range("A1") Dim tWS As Worksheet 'the worksheet that has the values you want to get Set tWS = Worksheets("sheet2") Dim r As Range For Each r In Range(fRng.Formula).Rows 'Debug.Print r.Row ' this is the rows numbers Debug.Print tWS.Cells(r.Row, "N").Value 'N is the column name Next End Sub