在 Excel 中使用 Python 并尝试将 Python 中的值插入到单元格中

问题描述 投票:0回答:1

PythonProgramming 的问题最接近我的问题,但答案并不令人满意。关于 Python-In-Excel 的文档非常少。我正在 Excel 中运行一个 Python 脚本,其中包含一个循环,我想将迭代次数(number_of_points)“打印”到同一张表中的单元格中。大多数文档都涉及我不感兴趣的大型数据库。我使用 Excel 和 Python 以及之前的 VBA 创建科学和数学工作表。这是脚本:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(1, 1, 1)

a = xl("F2")
b = xl("G2")
c = xl("H2")
d = xl("I2")
x = np.linspace(-10, 10, 400)
y1 = -a*x+b
y2 = 0*x+c

# Create the plot


plt.plot(x, y1, color='blue', ls='--')
plt.plot(x, y2, color='red', ls='--')
plt.axvline(x = d, color = 'g', ls = "--")

number_of_points = 0
for i in range(-10, 11):
    for j in range(-10, 11):
        if a*i + j < b and  j > c and i > d:
            plt.plot(i, j, 'go')  # 'go' for green points
            number_of_points = number_of_points + 1


# Major ticks every 20, minor ticks every 5
major_ticks = np.arange(-10, 11, 1)
minor_ticks = np.arange(-10, 11, 1)

ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticks)
ax.set_yticks(minor_ticks, minor=True)
ax.axhline(linewidth=1.2, color="k")
ax.axvline(linewidth=1.2, color="k")
# And a corresponding grid
ax.grid(which='both')

# Or if you want different settings for the grids:
ax.grid(which='minor', alpha=0.2)
ax.grid(which='major', color ="black", linewidth = 0.6, alpha=0.8)
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.show()

目前,代码生成了我想要的图表。只需要返回 number_of_points 即可。一个数字,而不是数据库。下面是脚本生成的图表的图片。

Plot of integer ordered pairs inside feasibility region

python excel return cell
1个回答
0
投票

您需要以“number_of_points”结束脚本:

...
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.show()
number_of_points
© www.soinside.com 2019 - 2024. All rights reserved.