提取行位置以用作参考

我使用这篇文章中的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