我有一个85,038行的Excel表,我如何随机select10%的这些?

有5列(名字,电子邮件,用户名,应用程序名称),我想随机select这些行的10%,并最终导出到CSV,同时保持上面列出的列标题。 太感谢了

我不知道你想如何随机,但添加一个包含=RANDBETWEEN(1,85038)的列被复制下来以适应,然后对该列进行sorting并select第一个8,504行应该给出相当“任意”的结果。

您是否熟悉Excel中的SQL和Microsoft Queryfunction(数据 – > …->来自Microsoft Query)?

如果是,那么使用这个

 ( SELECT "first name, email, userid, app name" ) UNION ( SELECT TOP 8503 t.[first name] & "," & t.[email] & "," & t.[userid] & "," & t.[app name] FROM [Sheet1$] AS t ORDER BY RND() ) 

然后复制粘贴到一个空的文本文件并保存为CSV

你也可以使用我的SQL插件这个http://blog.tkacprow.pl/?page_id=130

编辑1:我认为“Sheet1”是您的工作表的名称

以下是使用Array Formula的可能解决scheme。
假设你在列A中有数据(在这个例子中我只使用了100个数据)。

在这里输入图像说明

现在在C2中,input以下公式:( 信贷到奥斯卡。 )

=IF(ROW(A1)<=0.1*COUNTA($A$2:$A$101),INDEX($A$2:$A$101, LARGE(MATCH(ROW($A$2:$A$101), ROW($A$2:$A$101))*NOT(COUNTIF($C$1:C1, $A$2:$A$101)), RANDBETWEEN(1,ROWS($A$2:$A$101)-ROW(A1)+1))),"")

使用Ctrl + Shift + Enter可以使公式生效。
只使用回车将返回#N / A。
然后为了得到其余的值,只需拖动公式。
在这个例子中,我只是自动填充到C20。

注意:兰德之间是波动的。 所以每当你改变一些东西,重新计算就会发生。 如果你要返回8k的数据,这将是很多重新计算。 这可能需要一段时间。