Excel平均-计算变量数

时间:2018-11-19 16:38:25

标签: excel count average

我正在使用平均值函数excel来获得欧洲各个城市一系列酒店价格的平均值。

=average(21,42,63,84,105)

我希望能够计算每个平均函数中的变量数量(例如,在上面的示例中有5个)。数据是从网站上清除的,这就是为什么它采用上述格式,而不是放在单独的单元格中。

有没有一种方法可以在不取出变量的情况下将其放入单元格,然后使用“文本到列”将单元格分离出来?

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用public static File gzip(File fileToCompress) throws IOException { final File gzipFile = new File(fileToCompress.toPath().getParent().toFile(), fileToCompress.getName() + ".gz"); final byte[] buffer = new byte[1024]; try (FileInputStream in = new FileInputStream(fileToCompress); GZIPOutputStream out = new GZIPOutputStream( new FileOutputStream(gzipFile))) { int len; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } } return gzipFile; } public static File tar(File folderToCompress) throws IOException, ArchiveException { final File tarFile = Files.createTempFile(null, ".tar").toFile(); try (TarArchiveOutputStream out = (TarArchiveOutputStream) new ArchiveStreamFactory() .createArchiveOutputStream(ArchiveStreamFactory.TAR, new FileOutputStream(tarFile))) { out.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU); Files.walk(folderToCompress.toPath()) // .forEach(source -> { if (source.toFile().isFile()) { final String relatifSourcePath = StringUtils.substringAfter( source.toString(), folderToCompress.getPath()); final TarArchiveEntry entry = new TarArchiveEntry( source.toFile(), relatifSourcePath); try (InputStream in = new FileInputStream(source.toFile())){ out.putArchiveEntry(entry); IOUtils.copy(in, out); out.closeArchiveEntry(); } catch (IOException e) { // Handle this better than bellow... throw new RuntimeException(e); } } }); } return tarFile; } 将方程式转换为字符串,然后通过对字符串中逗号的实例进行计数来推断要求平均值的数量(这与FORMULATEXT()的最终答案有关


方程式的第一部分计算字符长度,并用逗号。第二部分计算字符长度不带。区别仅仅是逗号的数量。然后,由于您的最后一个值后面没有逗号

,因此我们添加一个
Total Commas + 1 = Total Values

假设您的平均公式在单元格=LEN(FORMULATEXT(A1))-LEN(SUBSTITUTE(FORMULATEXT(A1),",",""))+1

答案 1 :(得分:2)

我是使用UDF的粉丝,所以这是另一种方法。

您可以为此创建一个自定义的用户定义函数(UDF)。只需用分隔符将函数分开,然后从UBOUND()中获取您的号码即可。

Public function getNumArgs(inputRng as range) as long

    'First check that you are actually looking at a formula
    If Left(inputRng.Formula, 1) <> "=" Then
        getNumArgs = False
        exit function
    End If

    getnumargs = ubound(split(inputrng.formula, ",")) + 1

end function

您将添加1,因为VBA使用的是基数0。

  

然后,您将以与其他工作表公式相同的方式使用自定义UDF:

=getNumArgs(A1)

使用UDF的最大好处是您不必记住复杂的公式。