VBA举行excel坐标转换

打印 上一主题 下一主题

主题 974|帖子 974|积分 2924

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


使用坐标绘图即将横纵坐标对应excel的行和列,将数值写入单元格中,从而形成带行列的map,具体做法已经在VBA应用实战案例(5)内里论述过,本案例的重点是使用特定公式转换坐标的方法来转换数值在excel中的位置,从而实现图像变更的目的。
具体实现代码如下,值得注意的是,案例中定义的象限和数学中的象限并不一样,只是便于表达而已,可以根据需要修改成其他描述。
  1. Private Sub ComboBox1_Change()
  2.     Quadrant = ComboBox1.Text
  3. End Sub
复制代码
  1. Private Sub Workbook_Open()
  2. Sheet1.ComboBox1.Clear
  3. Sheet1.ComboBox1.AddItem "1st"
  4. Sheet1.ComboBox1.AddItem "2nd"
  5. Sheet1.ComboBox1.AddItem "4th"
  6. Sheet1.ComboBox1.Text = "1st"
  7. Quadrant = "1st"
  8. End Sub
复制代码
  1. Public Quadrant As String
  2. Sub Macro1()
  3.     Sheets("Map").Select
  4.     Sheet3.Cells.Select
  5.     With Selection
  6.         .ClearContents
  7.     End With
  8.    
  9.     With Sheet1
  10.         X_Max = .Cells(3, 3)
  11.         Y_Max = .Cells(3, 5)
  12.     End With
  13.    
  14.     Dim Map_bin(99, 99)
  15.     GrossDie = 9999
  16.    
  17.     For i = 1 To GrossDie
  18.         With Sheet2
  19.             t1 = .Cells(i + 1, 1)
  20.             t2 = .Cells(i + 1, 2)
  21.             t3 = .Cells(i + 1, 3)
  22.         End With
  23.         Map_bin(t1, t2) = t3
  24.     Next
  25.    
  26.     For X = 1 To X_Max
  27.         For Y = 1 To Y_Max
  28.         With Sheet3
  29.         Select Case (Quadrant)
  30.             Case "4th"
  31.                 .Cells(1, X + 1) = X - 1
  32.                 .Cells(Y + 1, 1) = Y - 1
  33.                 .Cells(Y + 1, X + 1) = Map_bin(X - 1, Y - 1)
  34.                
  35.             Case "2nd"
  36.                 .Cells(Y_Max + 1, X) = X_Max - X
  37.                 .Cells(Y, X_Max + 1) = Y_Max - Y
  38.                 .Cells(Y_Max - Y + 1, X_Max - X + 1) = Map_bin(X - 1, Y - 1)
  39.                
  40.             Case "1st"
  41.                 .Cells(Y_Max + 1, X + 1) = X - 1
  42.                 .Cells(Y, 1) = Y_Max - Y
  43.                 .Cells(Y_Max - Y + 1, X + 1) = Map_bin(X - 1, Y - 1)
  44.             End Select
  45.         End With
  46.         Next
  47.     Next
  48. '
  49. End Sub
复制代码
代码实现结果如下图。
4th象限坐标

2nd象限坐标:

1st象限坐标:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表