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

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").Select
    Sheet3.Cells.Select
    With Selection
        .ClearContents
    End With
    
    With Sheet1
        X_Max = .Cells(3, 3)
        Y_Max = .Cells(3, 5)
    End With
    
    Dim Map_bin(99, 99)
    GrossDie = 9999
    
    For i = 1 To GrossDie
        With Sheet2
            t1 = .Cells(i + 1, 1)
            t2 = .Cells(i + 1, 2)
            t3 = .Cells(i + 1, 3)
        End With
        Map_bin(t1, t2) = t3
    Next
    
    For X = 1 To X_Max
        For Y = 1 To Y_Max
        With Sheet3
        Select 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 Select

        End With
        Next
    Next
'
End Sub

代码实现效果如下图。

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


http://www.kler.cn/a/293268.html

相关文章:

  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 第一个 Flutter 项目(1)共46节
  • Openstack7--安装消息队列服务RabbitMQ
  • 尽量通俗易懂地概述.Net U nity跨语言/跨平台相关知识
  • Linux 进程线程间通信总结
  • Web安全之SQL注入---基础
  • CSP-S 2022 提高级 第一轮 阅读程序(3)
  • Redis进阶(五):集群
  • AWS-亚马逊网络服务(基础服务)-AWS 定价计算器-概述与动手部署:
  • c++ 实现线程池
  • 关于pip和conda环境路径不同的解决办法。
  • Mysql递归查询
  • 蜜罐网络MHN安装过程中的坑
  • Webpack 的loader和plugin原理
  • 类比推理-错题集
  • SpringBoot开发——如何防御XSS攻击
  • sqli-labs靶场(56-60)
  • 云计算之ECS
  • 常工院星闪节能团队参加悉尼大学设计交流项目
  • 中间代码例题
  • OSPF 协议介绍
  • Zipkin链路追踪②:如何集成?
  • 网络训练和推理过程
  • Android切换日夜模式导致Activity重建
  • C/C++的自由落体运动
  • 服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例