【发布时间】:2017-12-12 22:00:17
【问题描述】:
在 excel 中,我有(包含许多分类变量列的表):
A E
S E
D YU
R T
FD R
FD RT
D YU
S T
AS R
D RR
D R
我想要(每个单独词的频率):
A 1 E 2
S 2 YU 2
D 4 T 2
R 1 R 3
FD 2 RT 1
AS 1 RR 1
我正在计算每个术语的频率。我可以手动单独计算:
Sub ff()
Range("B1:B6").Select
Selection.FormulaArray = "=COUNTIFS(Sheet1!C[-1],Sheet2!RC[-1]:R[5]C[-1])"
Range("D1").Select
End Sub
但我想遍历每一列并将频率计数放在另一张纸上。到目前为止,我有:
Sub Macro1()
Sheets("Sheet1").Select
lcol = Cells(1, Columns.Count).End(xlToLeft).Column
N = Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To lcol
Range(Cells(1, j), Cells(N, j)).Select
Selection.Copy
Sheets("Sheet2").Select
Cells(1, 2 * j - 1).Select
ActiveSheet.Paste
Columns(2 * j - 1).RemoveDuplicates Columns:=1, Header:=xlNo
nr = Cells(Rows.Count, 2 * j - 1).End(xlUp).Row
Range(Cells(1, 2 * j), Cells(nr, 2 * j)).Select
*Selection.FormulaArray = "=COUNTIFS(Sheet1!C[" & j & "],Sheet2!RC[-1]:R[5]C[-1])"
Sheets("Sheet1").Select
Next j
End Sub
- 是我不断收到错误的地方。如何通过索引以公式表示法引用另一个工作表单元格范围。我想使用 j 来引用正确的列。
我听从了Refereing to a range of cell in another sheet 的建议,但它们引用了显式单元格。在我的例子中,我将引用显式单元格,但是通过索引引用 (j)。
注意
Sheets(2).Range("F15:AK46").Select
也给了我一个错误
【问题讨论】:
-
我可能会为此使用字典,并且如果密钥已经存在,例如A 然后将关联值加 1。
-
如果您最终知道最终范围是多少,只需将该范围公式设置在循环之外等于您的原始公式即可。