Board logo

標題: [發問] 如何讀取矩陣資料的問題 [打印本頁]

作者: Helain    時間: 2011-11-1 20:02     標題: 儲存格對應的問題

我想從table1 任何cell, 去table2找尋對應的cell

Ex: 我選定table 1“C6” , table2 對應的是C14
該如何寫呢?
作者: Hsieh    時間: 2011-11-1 20:46

回復 1# Helain
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. If Intersect(Target, [C6:F9]) Is Nothing Then Exit Sub
  3. MsgBox "選取" & Target.Address
  4. MsgBox "對應" & Application.Index([C14:F17], Target.Row - 5, Target.Column - 2).Address
  5. End Sub
複製代碼

作者: GBKEE    時間: 2011-11-1 21:33

本帖最後由 GBKEE 於 2011-11-2 07:29 編輯

回復 1# Helain
  1. Private Sub Workbook_Open()  'ThisWorkbook 的程序 檔案開啟時自動執行
  2.     Ex
  3. End Sub
  4. Private Sub Ex()             'ThisWorkbook 的程序
  5.     With Sheet1
  6.         .Names.Add "table1", .Range(.[C6], .[C6].End(xlToRight).End(xlDown))   '定義名稱
  7.         .Names.Add "table2", .Range(.[C14], .[C14].End(xlToRight).End(xlDown)) '定義名稱
  8.    End With
  9. End Sub
複製代碼
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range) '工作表1的程序
  2.     Dim R As Double, C As Double
  3.     If Intersect(Target, [table1]) Is Nothing Then Exit Sub
  4.     R = Target.Row - [table1].Cells(1).Row + 1
  5.     C = Target.Column - [table1].Cells(1).Column + 1
  6.     MsgBox "選取" & Target(1).Address(0, 0) & "  對應 " & [table2].Cells(R, C).Address(0, 0)
  7. End Sub
複製代碼

作者: Helain    時間: 2011-11-2 11:25     標題: 如何讀取矩陣資料的問題

我想要問,如何讀取矩陣資料的問題
有2個檔案, table A, table B

tableB是矩陣資料

table A 也是呈現矩陣的方式去運算

如:
i=1 j = 5,
A=4 列
B=5 欄

"如何用不同的A,B去讀取table B的

cells(3,7).value= 27 "讀取tableB 的數值
作者: Helain    時間: 2011-11-2 21:20

其實我看不太懂兩位大大提出的想法,
如果先想簡單一點, 我有2個行列數相同的table在同一個sheet裡.

我選取Table A其中一個cell位置時, 也想在table B 找出與table A相對應的值
如果用OFFSET這個函數來做呢?
不知道要如何讀取Table A 所選取的位置資訊
table B的對應值=OFFSET(tableB參考值 , 在tableA 選取的列, table B選取的欄 )

還是有其他方法可以呢??

感謝大大們為我解答
作者: Hsieh    時間: 2011-11-2 23:08

回復 5# Helain

作用中儲存格就是ActiveCell
ActiveCell.Row取得作用儲存格列號
ActiveCell.Column取得作用儲存格欄號
作者: Helain    時間: 2011-11-4 16:17

我想要問說
假設有一堆數值資料, 選取最大值
想得到該最大值的位置
就是另他選到的那個值為activecell
該如何做呢?
作者: Helain    時間: 2011-11-4 16:23

可以為我解釋一下Intersect的用法嗎?

If Intersect(Target, [table1]) Is Nothing Then Exit Sub
通常寫is nothing.....是指什麼意思
作者: luhpro    時間: 2011-11-6 21:07

本帖最後由 luhpro 於 2011-11-6 21:34 編輯

回復 8# Helain
我的理解是 :
Is Nothing 口語化的解釋大約就是 "什麼都沒有",
引伸過來 VBA 就是找不到符合處理結果(或計算條件)的標的,
其意大約也就是 "空值"(NULL).

但我試過若改成
If Intersect(Target, [table1]) ="" Then Exit Sub 會有錯誤,
但原因我就想不透了.

回復 10# Hsieh
謝謝你的解說,
這樣我就了解了.
作者: Hsieh    時間: 2011-11-6 21:30

回復 9# luhpro

Intersect會傳回Range物件
當物件變數為非實體物件時即為Nothing
所以,Intersect必須以Nothing關鍵字表示非實體物件
若使用空字串"",此為字串型態之無字串表示
所以Intersect函數計算結果,若使用空字串將傳回資料型態錯誤




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)