当前位置: 主页 > 数据库

excel 数据库建立-excel如何筛选出b列在a列数据中不重复的数据

发布时间:2023-02-11 16:07   浏览次数:次   作者:佚名

Excel既是福也是祸。

当涉及到足够小的数据和足够简单的操作时,Excel 是王者。 然而,一旦你发现自己在努力摆脱这些区域,它就会成为一种痛苦。

当然,ExcelVBA 可以用来解决这些问题,但在 2020 年,幸运的是你不必这样做!

如果有一种方法可以集成 Excel 和 Python,那么 Excel……就会长出翅膀!

现在有。 一个名为 xlwings 的 python 库允许用户通过 VBA 调用 python 脚本并在两者之间传递数据。

为什么要将 Python 与 ExcelVBA 集成?

事实上,用户可以在 VBA 中做任何事情。 那么,如果是这样,为什么要使用 Python? 好吧,有很多原因。

1. 您可以在 Excel 中创建自定义函数而无需学习 VBA(如果您还不知道的话)

2、用户对Excel的满意度

3.使用Python可以显着加快数据操作

4. 在 Python 中,几乎所有东西(机器学习、数据科学等)都有库

5. 因为你可以! ! !

准备使用 xlwings

与您要使用的任何新库一样,要做的第一件事就是安装它。 这很容易做到; 使用这两个命令,它可以立即准备就绪。 因此,在终端中输入命令:

pipinstall xlwings

下载安装库后,需要安装Excel集成部分。 确保关闭所有 Excel 实例和任何终端类型:

xlwings addin install

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

假设没有遇到错误,您应该能够继续。 但是在win10的excel 2016上excel 数据库建立,经常会出现如下错误:

xlwings0.17.0

[Errno 2] No such file or directory:'C:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'

如果您有幸遇到上述错误,您需要做的就是创建丢失的目录。 这可以通过使用 mkdir 命令轻松完成。 就我而言,我做了:

mkdirC:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART

假设 excel 与 python 库的集成安装成功,您可以立即注意到 excel 的主要区别:

excel 数据库建立_如何建立自己的素材库_excel如何筛选出b列在a列数据中不重复的数据

为 xlwings 启用用户定义的函数

首先,需要加载 Excel 加载项。 按 Alt、L、H,然后导航到上面的目录以加载插件。 完成后,您应该能够看到以下内容:

excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库_excel 数据库建立

最后,需要启用对 VBA 项目对象模型的可信访问。 这可以通过导航到“文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置”来完成:

xlwings 入门

从 Excel 到 Python (Python to Excel) 主要有两种方式。 第一种是直接从 VBA 调用 Python 脚本,另一种是通过用户定义的函数。 快速浏览一下两者。

为了避免任何混淆并使其每次都正确设置,xlwings 提供了创建 Excel 电子表格的功能excel 数据库建立,随时可用。 让我们在下面使用这个功能。 使用终端,导航到您喜欢的目录并键入:

xlwingsquickstart ProjectName

excel 数据库建立_如何建立自己的素材库_excel如何筛选出b列在a列数据中不重复的数据

将此称为 MyFirstPythonXL。 上面的命令将在预导航目录中创建一个新文件夹,其中包含一个 excel 表和一个 python 文件。

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

当您打开 .xlsm 文件时,您会立即注意到一个名为 xlwings.conf 的新 Excel 工作表。 如果您想覆盖 xlwings 默认值,只需重命名此工作表并删除起始下划线。 这样,准备工作就完成了,下面开始使用xlwings。

VBA 转 Python

在我们开始编码之前,首先要确保我们都在同一页面上。 要打开 ExcelVBA 编辑器,请按 Alt+F11。 这将返回以下屏幕:

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

使用 xlwings 的 VBA 编辑器

这里要注意的关键是这段代码将执行以下操作:

1. 在与电子表格相同的位置找到 Python 脚本

2.找到一个与电子表格同名的Python脚本(但扩展名为.py)

3. 从 Python 脚本中调用函数“main()”

言归正传,我们来看几个使用示例。

示例1:在Excel外部操作,并返回输出

在此示例中,您将了解如何在 Excel 外部执行操作,然后将结果返回到电子表格。 这可以有无限数量的用例。

从 CSV 文件中获取数据,对数据进行修改,然后将输出通过管道传输到 Excel。 这个操作很简单:

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

一、VBA代码:

它与默认值完全相同。

然后,Python代码:

importxlwings as xw

import pandas as pddef main():

    wb = xw.Book.caller()

    df =pd.read_csv(r'C:\temp\TestData.csv')

    df['total_length'] =  df['sepal_length_(cm)'] +df['petal_length_(cm)']

    wb.sheets[0].range('A1').value = df

结果如下:

excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库_excel 数据库建立

示例 2:使用 Excel 输入来驱动操作

在此示例中,从 Excel 读取输入,在 Python 中进行处理,然后将结果传回 Excel。

更具体地说,读取问候语、名称和可以找到笑话的文件位置。 然后 Python 脚本将从文件中随机取出一行并返回一个笑话。

一、VBA代码:

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

它与默认值完全相同。

然后,Python代码:

importxlwings as xw

import randomdef random_line(afile):

    line = next(afile)

    for num, aline in enumerate(afile,2):

      if random.randrange(num): continue

      line = aline

    return line

'Function from: stackoverflowdef main():

    wb = xw.Book.caller()

    listloc =str(wb.sheets[0].range('B3').value)

    fhandle = open(listloc, encoding ='utf-8')wb.sheets[0].range('A5').value = wb.sheets[0].range('B2').value + ' ' +wb.sheets[0].range('B1').value + ' here is a joke for you'

    wb.sheets[0].range('A6').value =random_line(fhandle)

结果是:

excel如何筛选出b列在a列数据中不重复的数据_excel 数据库建立_如何建立自己的素材库

excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库_excel 数据库建立

使用 xlwigs 的用户定义函数

以几乎与之前相同的方式更改 python 文件中的代码。 为了将某些东西变成 Excel 用户定义函数,我们只需在函数所在的行之前包含“@xw.func”:

蟒蛇代码:

importxlwings as xw@xw.func

def joke(x):

    wb = xw.Book.caller()

    fhandle = open(r'C:\Temp\list.csv')

    for i, line in enumerate(fhandle):

        if i == x:

            return(line)

结果发现:

如何建立自己的素材库_excel如何筛选出b列在a列数据中不重复的数据_excel 数据库建立

如果你像小新一样,更喜欢 Python 而不是 VBA,但需要使用电子表格,那么这个工具适合你,你可以将它用作一个不错的小数据库。

如何建立自己的素材库_excel如何筛选出b列在a列数据中不重复的数据_excel 数据库建立

excel 数据库建立_excel如何筛选出b列在a列数据中不重复的数据_如何建立自己的素材库

留言点赞关注