我使用来自this post.的建议在我的工作表中填充了一张包含空白单元格位置的Excel工作表。所以我在列A中填充了以下格式的位置
$X$1
或$X2:$X$4
。
我要做的是使用上面的列说明中的行号来填充单独的列。我想使用行号作为填充列的参考。所以B列看起来像
=$B$1
或=$B$2:$B$4
(取1和2-4并将其用作参考号码的行号)
两个列都引用了不同的表格,请原谅任何列命名。
我不确定这是否需要VBA,或者如果我只是使用一个公式,我希望VBA由于所需的细节。我查看了this和this等帖子。但这些都不完全包含我正在寻找的东西。特别是因为我希望它在$B$2:$B$4
案例中表达所有内容。
我对如何解决这个问题的直觉告诉我,从第A列解析第一个数字的字符串然后检查它是否是字符串的结尾。如果是,则将其提供给填充B列的引用,如果没有,则找到第二个数字并通过一个填充单元格的循环(在这种情况下,希望将所有内容保留在一个单元格中),每个值都为尊敬。
即
=$B2
=$B3
=$B4
我的问题是如何解决这个问题?我该如何解析字符串?如何生成将执行必要步骤的循环?例如使用数字作为参考来从不同的列中提取信息并将其整齐地提供给另一列。
答案 0 :(得分:1)
如果(例如)你的地址是$ 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
答案 1 :(得分:0)
试试这段代码:
SELECT ca.*
FROM (SELECT coachID, COUNT(*) as cnt,
RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM coaches_awards
GROUP BY coachID
) ca
WHERE seqnum = 1;