在上面的示例中,我想从F2开始,复制F2,G2和H2,然后将这些值粘贴到新行中,我想继续这样做直到最后一列如果我从C2开始并且必须粘贴到新的工作表中,我也可以。我想继续这样做,直到最后一行为空。
我已经找到了,但是它只复制每个第三个单元格,而不是范围:
Sub CopyNthData()
Dim i As Long, icount As Long
Dim ilastrow As Long
Dim wsFrom As Worksheet, wsTo As Worksheet
Set wsFrom = Sheets("Sheet2")
Set wsTo = Sheets("Sheet1")
ilastrow = wsFrom.Range("B100000").End(xlUp).Row
icount = 1
For i = 1 To ilastrow Step 3
wsTo.Range("B" & icount) = wsFrom.Range("B" & i)
icount = icount + 1
Next i
End Sub
我认为最好的方法是通过VBA,但是我对VBA还是个新手。任何建议,将不胜感激。
答案 0 :(得分:1)
如果我正确理解您的评论,您只是想复制更大的范围?
您可以执行以下操作:
stepCt = 3
lr = stepCt-1
For i = 1 To ilastrow Step stepCt
With wsTo
.Range(.Cells(icount,2),.Cells(icount+lr,2)) = wsFrom.Range(wsFrom.Cells(i,2),wsFrom.Cells(i+lr,2))
End With
icount = icount + stepCt 'Accounts for multiple ROWS
Next i
可以执行与多列类似的操作,您可以将lr
的列参数添加到Cells()
的行参数中,而不是添加Cells()
(最后一行)。在这种情况下,无需使用stepCt
。
编辑1:
更改为显示列而不是行,因为原始问题从要求将F2, F3, & F4
复制到F2, G2, & H2
来改变。
For i = 1 To ilastrow
With wsTo
.Range(.Cells(icount,6),.Cells(icount,8)).Value = wsFrom.Range(wsFrom.Cells(i,6),wsFrom.Cells(i,8)).Value
End With
icount = icount + 1
Next i
答案 1 :(得分:0)
我不确定您要查找的是什么,但这会将从F2开始的范围内的所有数据粘贴到以C2开始的新工作表中。
from pyspark.sql import functions as F
df = spark.createDataFrame([("a", 0.694), ("b", -2.669), ("a", 0.245), ("a", 0.1), ("b", 0.3), ("c", 0.3)], ["n", "val"])
df.show()
+---+------+
| n| val|
+---+------+
| a| 0.694|
| b|-2.669|
| a| 0.245|
| a| 0.1|
| b| 0.3|
| c| 0.3|
+---+------+
df = df.groupby('n').count() #.sort(F.desc('count'))
df = df.withColumn('dummy', F.lit(1))
df.show()
+---+-----+-----+
| n|count|dummy|
+---+-----+-----+
| c| 1| 1|
| b| 2| 1|
| a| 3| 1|
+---+-----+-----+
df = df.groupBy('dummy').agg(F.min('count').alias('min'), F.max('count').alias('max')).drop('dummy')
df.show()
+---+---+
|min|max|
+---+---+
| 1| 3|
+---+---+