ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 152|回复: 10

[求助] 问个稍微有点难度的问题:如何让图片适应单元格的宽度?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-13 23:23 | 显示全部楼层 |阅读模式
本帖最后由 天际孤帆 于 2024-11-14 12:43 编辑

问个稍微有点难度的问题:如何让图片适应单元格的宽度?

怎样让多个图片根据背景单元格的列宽,自主调整图片的宽度、使得图片刚刚好完全填满背景单元格的列宽?

如下图:




QQ20241113-231601.png

行高可以自动调整,最终实现目的,如下图:
(不改变图片的原有比例,按原有的顺序,整整齐齐,排列好)
QQ20241113-231601-2.png

TA的精华主题

TA的得分主题

发表于 2024-11-14 02:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
多个图片填充,你需要确定的是如何分配空间?例如3个图片,每个图片占1/3宽度?还是有其他逻辑,剩下的就是计算图片缩放比例而已

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-14 12:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
taller 发表于 2024-11-14 02:11
多个图片填充,你需要确定的是如何分配空间?例如3个图片,每个图片占1/3宽度?还是有其他逻辑,剩下的就是 ...

按图片原有比例缩放:

第一步,先实现多图同样的高度;
第二步,多图同时按原有比例缩放,然后多图的宽度加起来,刚好等于背景单元格的列宽;
第三步,多个图片按顺序,整齐排列好,排列好之后,刚好等于背景单元格的列宽。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-14 12:40 | 显示全部楼层
taller 发表于 2024-11-14 02:11
多个图片填充,你需要确定的是如何分配空间?例如3个图片,每个图片占1/3宽度?还是有其他逻辑,剩下的就是 ...

行高可以自动调整,最终实现目的,如下图:
QQ20241113-231601-2.png

TA的精华主题

TA的得分主题

发表于 2024-11-14 12:44 | 显示全部楼层
天际孤帆 发表于 2024-11-14 12:35
按图片原有比例缩放:

第一步,先实现多图同样的高度;

你这个规则是相互制约(矛盾)的

如果按比例缩放,并且多图同高,那么有了这两个条件限制,图的宽度就是固定的了,不可能再按照列宽进行调整

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-14 12:50 | 显示全部楼层
本帖最后由 天际孤帆 于 2024-11-14 12:53 编辑
taller 发表于 2024-11-14 12:44
你这个规则是相互制约(矛盾)的

如果按比例缩放,并且多图同高,那么有了这两个条件限制,图的宽度就 ...

不矛盾啊版主,多图同高,图的宽度也会随着原有比例改变的。正常来说,图的高度锁定了,能改变的,就只有宽度了。

但咱们可以随时调整图的高度,来改变图的宽度(因为图的比例锁定了),最终让多图适应背景单元格的宽度。

行高可以调整,行高可以调整,行高可以调整

TA的精华主题

TA的得分主题

发表于 2024-11-14 12:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
设统一高度为x,则统一后图1的宽=x*宽高比1,图2的宽=x*宽高比2,图3的宽=x*宽高比3
总宽=统一高度后图1的宽+图2的宽+图3的宽
图1的宽/总宽=宽度占比,乘以单元格宽就是需要设置的宽度,再按比例算出高度,其他图片相同

TA的精华主题

TA的得分主题

发表于 2024-11-14 13:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-11-14 13:51 | 显示全部楼层
  1. Sub demo()
  2.     Dim c As Range, Shp As Shape, wAll, r, iLeft
  3.     Set c = [B2]
  4.     For Each Shp In Sheet1.Shapes
  5.         Shp.LockAspectRatio = msoCTrue
  6.         Shp.Height = 100
  7.         wAll = wAll + Shp.Width
  8.     Next
  9.     r = c.Width / (wAll + 2)
  10.     iLeft = c.Left
  11.     For Each Shp In Sheet1.Shapes
  12.         Shp.LockAspectRatio = msoCTrue
  13.         Shp.Height = 100 * r
  14.         Shp.Top = c.Top
  15.         Shp.Left = iLeft
  16.         iLeft = iLeft + Shp.Width + 1
  17.     Next
  18.     c.RowHeight = Sheet1.Shapes(1).Height
  19. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-14 23:24 | 显示全部楼层

taller哥思路确实可行,不过是所有图片都集中到一个单元格中去了,只需要稍微修改成目标单元格中的图片即可。牛
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 07:11 , Processed in 0.038523 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表