【发布时间】:2018-06-07 20:42:11
【问题描述】:
假设我有一个包含“天气类型”的两列表。第一列有天气类型(例如雨、雪、冰、云、太阳),第二列有一个代表天气类型的图片图标。
假设我有第二个“工作日”表,它再次用相同的两列显示本周预期的天气,但这次有 7 行,即 7 天。但是,假设这个表的第一列每周自动更新,如果我希望第二列显示的图片自动匹配对应天气类型的第一表中的图片。
【问题讨论】:
标签: excel
假设我有一个包含“天气类型”的两列表。第一列有天气类型(例如雨、雪、冰、云、太阳),第二列有一个代表天气类型的图片图标。
假设我有第二个“工作日”表,它再次用相同的两列显示本周预期的天气,但这次有 7 行,即 7 天。但是,假设这个表的第一列每周自动更新,如果我希望第二列显示的图片自动匹配对应天气类型的第一表中的图片。
【问题讨论】:
标签: excel
这种情况很容易解决。
要实现的最重要的事情是:
如果您选择任何图片,然后在公式栏中键入单元格引用(例如=A1 或=A1:D1),图片将使用该公式来确定要显示的内容。该公式使相框“查找”位于公式中引用的单元格上方的任何形状对象。然后,所选图片将显示公式参考中单元格上方的部分形状(即图片)。
这意味着要查找其图像的形状通常需要在单个单元格中完全显示。
拼音!?
因此,在我在问题中绘制的场景中,“工作日”表的每一行都需要一张空白图片,并带有一个公式,该公式引用了“天气类型”表中包含天气图片的单元格“超过它。这比你想象的要棘手,因为空图片不“知道”它在哪个单元格上。
这意味着每张显示图像的图片都需要链接到一个单元格。这是通过为需要查找其图片的每张图片创建命名函数或命名范围来实现的。这个命名的函数/范围引用了与该单张图片相关的单元格(我稍后将其称为RELATED_CELL)
有多种方法可以使用命名函数返回对单元格的引用。下面是两个例子:
EXAMPLE METHOD 1
此示例依赖于包含命名范围名称的一部分的RELATED_CELL。然后 INDIRECT 用于获取命名范围所引用的单元格的引用。这需要为包含将用于查找图片的 WeatherTypeName 列中的每个单独的单元格指定一个命名范围。
一篇文章here 很好地描述了这种技术。
EXAMPLE METHOD 2 (My preferred method)
在本例中,RELATED_CELL 包含要查找的 WeatherType 名称。它不依赖于天气类型表中的所有单元格被命名为范围。相反,它使用“查找”方法扫描和检查天气类型名称值以查找图片。
完整的描述可以在here页面上的评论中找到
评论者提供的附件很有用,见here
请注意,您不能使用 VLOOKUP 本身,因为它返回单元格的值而不是对它的引用。而是使用MATCH、ADDRESS 和INDIRECT 来查找RELATED_CELL 中的值。
我想补充一点,我从给定的链接中学习了这些技术,并模仿了 pdf 中的示例。我希望我上面解释的要点能帮助您更容易地理解这些方法。
哈维
【讨论】:
关于通过 VBA 设置图片源的补充说明。
可以在隐藏的工作表上放置各种图片形状(和/或文本框形状),例如 sheets("Images"),然后通过 VBA 将主工作表上的图片形状设置为其中任何一个.
示例Sheets("Images") 在 $A$1 中包含“pic1”,在 B2 中包含“pic2”,在 C3 中包含“txt1”(文本种类而不是图片的形状)。 Sheets(1) 包含图片“picTest”(最初是通过从图像表中复制 pic1 创建的)。
将picTest的公式设置为=Images!SB$2或=Images!C3等,图片会随之变化。
这可以通过 VBA 实现:sheets(1).pictures("picTest").formula = "Images!$A$1"
注意它可能不会复制任何图片格式属性,因此如果某些图像应用了非默认格式,您需要编写脚本来复制相关属性。
【讨论】: