当前位置: 首页 > news >正文

VBA进行excel坐标转换

在Excel里利用坐标绘图时,可以比较容易想到采用数据透视表,但是数据透视表生成的图不可更改,因此本案例采用VBA进行坐标变换而不改变原始值来转换图像,即实现图像的左右翻转和上下翻转,如下图所示,选择map的坐标象限后点击“start”即可实现图像的翻转方向。
坐标文件格式

坐标及对应的值
利用坐标画图即将横纵坐标对应excel的行和列,将数值写入单元格中,从而形成带行列的map,具体做法已经在VBA应用实战案例(5)里面阐述过,本案例的重点是利用特定公式转换坐标的方法来转换数值在excel中的位置,从而实现图像变换的目的。

具体实现代码如下,值得注意的是,案例中定义的象限和数学中的象限并不一样,只是便于表达而已,可以根据需要修改成其他描述。

Private Sub ComboBox1_Change()Quadrant = ComboBox1.Text
End Sub
Private Sub Workbook_Open()
Sheet1.ComboBox1.Clear
Sheet1.ComboBox1.AddItem "1st"
Sheet1.ComboBox1.AddItem "2nd"
Sheet1.ComboBox1.AddItem "4th"Sheet1.ComboBox1.Text = "1st"
Quadrant = "1st"
End Sub
Public Quadrant As String
Sub Macro1()Sheets("Map").SelectSheet3.Cells.SelectWith Selection.ClearContentsEnd WithWith Sheet1X_Max = .Cells(3, 3)Y_Max = .Cells(3, 5)End WithDim Map_bin(99, 99)GrossDie = 9999For i = 1 To GrossDieWith Sheet2t1 = .Cells(i + 1, 1)t2 = .Cells(i + 1, 2)t3 = .Cells(i + 1, 3)End WithMap_bin(t1, t2) = t3NextFor X = 1 To X_MaxFor Y = 1 To Y_MaxWith Sheet3Select Case (Quadrant)Case "4th".Cells(1, X + 1) = X - 1.Cells(Y + 1, 1) = Y - 1.Cells(Y + 1, X + 1) = Map_bin(X - 1, Y - 1)Case "2nd".Cells(Y_Max + 1, X) = X_Max - X.Cells(Y, X_Max + 1) = Y_Max - Y.Cells(Y_Max - Y + 1, X_Max - X + 1) = Map_bin(X - 1, Y - 1)Case "1st".Cells(Y_Max + 1, X + 1) = X - 1.Cells(Y, 1) = Y_Max - Y.Cells(Y_Max - Y + 1, X + 1) = Map_bin(X - 1, Y - 1)End SelectEnd WithNextNext
'
End Sub

代码实现效果如下图。

4th象限坐标
4th象限图像
2nd象限坐标:
2nd象限图像
1st象限坐标:
1st象限图像

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript 条件分支语句if...else
  • 内核链表
  • Python作为客户端连接websocket
  • Webview Android性能优化
  • html+css网页设计 合十文化2个页面
  • adb remount Now reboot your device for settings to take effect
  • 中间件解析漏洞(附环境搭建教程)
  • 俄国留学生vs国内计算机本硕博
  • 基于STM32设计的智能安防系统(微信小程序)(218)
  • WPF 中常用 `Transform` 类的介绍、使用示例和适用场景
  • Linux 进程与线程相关函数及进程间通信方法
  • 数据库系统 第38节 数据库备份
  • 『功能项目』主角身旁召唤/隐藏坐骑【20】
  • Chrome 浏览器:现代网络浏览的先锋
  • 满誉而归 | 2024物联网IOTE展·人工智能AGIC展完美收官
  • 【译】JS基础算法脚本:字符串结尾
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • #Java异常处理
  • C++11: atomic 头文件
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS 专业技巧
  • CSS实用技巧
  • Java 网络编程(2):UDP 的使用
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java编程基础24——递归练习
  • Java程序员幽默爆笑锦集
  • js如何打印object对象
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node + FFmpeg 实现Canvas动画导出视频
  • python学习笔记 - ThreadLocal
  • VuePress 静态网站生成
  • vue--为什么data属性必须是一个函数
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从0到1:PostCSS 插件开发最佳实践
  • 简单实现一个textarea自适应高度
  • 解决iview多表头动态更改列元素发生的错误
  • 前端相关框架总和
  • 设计模式(12)迭代器模式(讲解+应用)
  • 写给高年级小学生看的《Bash 指南》
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #Linux(权限管理)
  • #传输# #传输数据判断#
  • $.proxy和$.extend
  • $forceUpdate()函数
  • (1)常见O(n^2)排序算法解析
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (52)只出现一次的数字III
  • (7)svelte 教程: Props(属性)
  • (libusb) usb口自动刷新