這段程式碼假設您的XYZ資料存儲在名為"Sheet1"的工作表中的A1:Cn範圍內,其中n是資料行的數量。它將資料提取出來,然後在新建的工作表中按照網格的形式重新排列。請注意,這種方法可能會丟失某些資料點,具體取決於原始XYZ資料的分佈方式。
Option Explicit
Sub XYZToMesh()
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim sourceRange As Range
Dim targetRange As Range
Dim xValues As Variant
Dim yValues As Variant
Dim zValues As Variant
Dim i As Long, j As Long
' 假設XYZ資料儲存在Sheet1的A1:Cn範圍內
Set wsSource = ThisWorkbook.Sheets("Sheet1")
Set sourceRange = wsSource.Range("A1").CurrentRegion
xValues = sourceRange.Columns(1).Value
yValues = sourceRange.Columns(2).Value
zValues = sourceRange.Columns(3).Value
' 新建一個工作表來儲存網格數據
Set wsTarget = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
Set targetRange = wsTarget.Range("A1")
' 將XYZ資料轉換為網格形式
For i = LBound(xValues) To UBound(xValues)
For j = LBound(yValues) To UBound(yValues)
targetRange.Offset(i, 0).Value = xValues(i, 1)
targetRange.Offset(i, 1).Value = yValues(j, 1)
targetRange.Offset(i, 2).Value = zValues(i, 1) ' 假設zValues的維度與x、y相同
Set targetRange = targetRange.Offset(1, 0)
Next j
Set targetRange = targetRange.Offset(0, 1 - UBound(yValues) + LBound(yValues))
Next i
MsgBox "XYZ資料已成功轉換為網格形式並輸出到新的工作表。"
End Sub
要將上述VBA功能添加到Excel中,請按照以下步驟進行操作:
打開Excel並打開您想要添加功能的工作簿。
按下ALT + F11鍵,這將打開Visual Basic for Applications (VBA)編輯器。
在VBA編輯器中,點擊菜單中的"插入",然後選擇"模塊"。這將在"模塊"文件夾中創建一個新的模塊。
在新創建的模塊中,複製並粘貼上面提供的VBA代碼。
關閉VBA編輯器,返回Excel。
現在,您可以將功能分配給按鈕。要添加一個按鈕,請按照以下步驟操作:
在Excel工具欄中,找到"開發人員"選項卡。如果您找不到"開發人員"選項卡,請進入Excel的選項,啟用"開發人員"選項卡。
在"開發人員"選項卡中,點擊"插入",然後在"ActiveX 控制項"下選擇"按鈕"。接下來,在工作表上繪製一個按鈕。
點擊新繪製的按鈕,然後右鍵單擊它,選擇"屬性"。在屬性窗格中,為按鈕指定一個有意義的名稱(例如"RunXYZToMesh")。
雙擊按鈕,這將打開VBA編輯器並將焦點放在新按鈕的點擊事件上。在該事件中,您可以調用上面添加的VBA代碼。
將代碼中的工作表名稱和範圍引用根據您的實際Excel文件進行修改。
完成後,關閉VBA編輯器並返回到Excel。現在,您可以按下按鈕,觸發VBA功能,將XYZ數據轉換為XYZ網格。
==========
import os
from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget, QVBoxLayout, QWidget
class FileListWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("文件列表")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
# 創建可以複選的列表
self.file_listwidget = QListWidget()
# 讀取指定文件夾的文件列表
folder_path = "指定文件夾路径"
files = os.listdir(folder_path)
# 將文件列表添加到可複選的列表中
self.file_listwidget.addItems(files)
# 將點擊事件與處理函數關聯
self.file_listwidget.itemClicked.connect(self.item_clicked)
layout.addWidget(self.file_listwidget)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def item_clicked(self, item):
# 獲取所選項目的文本
selected_item_text = item.text()
print("選擇的項目:", selected_item_text)
if __name__ == "__main__":
app = QApplication([])
window = FileListWindow()
window.show()
app.exec_()