返回列表 上一主題 發帖

[發問] 兩表比對後將結果輸出

回復 20# lpk187
lpk大
這段說法太高深...
可否煩請舉個實例借喻?
謝謝!

TOP

本帖最後由 lpk187 於 2022-6-2 10:50 編輯

回復 21# shuo1125


    高深?不會吧!
同一個程序時
Brr()用用法是做宣告,Dim Brr() 或 Brr(2,2)...它其實就是告訴電腦,我的車比較大,可以裝比一般的變數的數量還多,因為它是陣列
而Brr是它開始載貨才用,例如 Brr=Range("A1:B5"),所以Brr和Brr()本來就是同一個,既然是同一個哪是brr=brr(),不能這樣說的,
你會跟別人說 你=你嗎?還有 在程式語言裡面,"=" 不是數學中的 等於,而是把貨裝到這的意思!

TOP

本帖最後由 singo1232001 於 2022-6-2 16:00 編輯

回復 21# shuo1125

用魔獸世界遊戲 包包 的概念 包包內可放任何東西     包括新的包包
   dim  br 是 1格包包
   redim  br(3,3 ) 是16格包包 是4x4(像真實遊戲顯示那樣)
   dim  br(15) 也是 16格包包  包包是一條從上到下1234567....16格
   
   ' dim  br(3) : dim ar(3) : for i = 0 to 3 : br(i)=ar  : next     
    br(3)(3) 也是4格包包內放入4格包包  也是4x4  16格


用檔案總管資料夾當概念 資料夾內可以放任何東西  包括新資料夾
  dim br 是一個資料夾 只能放一樣
  redim br(3,3) 可以放16樣 4x4(類似 大圖示的瀏覽方式)  
  dim br(15)  資料夾內可以讓你放16個 (類似 從上到下 詳細清單模式)

  一樣可以br(3)(3)

TOP

回復 22# lpk187
lpk大
大概了解了,因非相關科系所以對程式語言很陌生...
故在解讀上可能誤解,謝謝您還特意關注回復。

TOP

回復 23# singo1232001
慶大
你舉的例子陣列說明得很詳盡...
連我這一竅不通的都能大致上理解,
謝謝您抽空回復!

TOP

粗淺的說
Dim Arr, Brr(), Crr(9,9)

(1)
Arr 是Variant, 可以賦于單一元素, 或儲存格範圍成一陣列, 或Redim為一個陣列
例:Arr=9, Arr="abc", Arr=range("A1:E9"), Redim Arr(1 to 9, 1 to 3)
   不管Arr已被賦于何種型態及內容, 其後仍可直接對其賦于其它型態及內容,
   當用 Arr = Crr, 也是可以接收其它"己定義且存在"的陣列,
  
   如果被定為陣列, 最後要釋放其佔用的記憶體時, 若用 Erase Arr, 則它還是陣列型態, 只是沒有大小,
   當然, 它還是可以再賦于任何內容, 如 Arr = Empty (初始化)
__它是紙漿, 可以製成任何所需, 回收時變成紙漿

(2)
Brr(), 為陣列, 只是還沒定大小, 而且只能用于陣列, 就像一塊地已規劃蓋房子, 還沒定出蓋幾層及隔間, 除了房子不可挪作它用,
其間可以在任何時候重新定義其大小及維度, 如 Redim Brr(9),  每次重定義, 前身資料即消失,
若要保留前資料, 且擴展空間, 可用 ReDim Preserve , 但只可以改變最後一個維度的上標界,而不能改變維數。
可用 Erase Brr 釋放資料, 但後續要用, 得重新定義!!
__它是一張紙, 無法裝東西, 可以折成任何型狀及大小去裝東西, 恢復時還是一張紙!!!

(3)
Crr(9, 9) ,為固定大小的陣列, 這應不需說明, Erase Crr 釋放資料, 但只是清空內容, 大小還是一樣
__它是個紙箱, 可裝固定大小的東西, 倒掉全部再繼續用

TOP

本帖最後由 singo1232001 於 2022-6-3 18:41 編輯

回復 25# shuo1125





陣列貼回工作表
來源 台大ptt
https://www.ptt.cc/bbs/Visual_Basic/M.1485488105.A.DB6.html

教學 陣列概念視覺化v3.zip (10.35 KB)

TOP

回復 26# 准提部林
准大
連准大都出現了...你給予我很大的啟發,
但你的思路及邏輯實在太變化莫測,
對我這新手來說難度真的太高...
謝謝您不吝的解說。

TOP

回復 28# shuo1125
慶大
太感謝了..還將連結告知,
這論壇不但聚集很多高手,還能毫不保留的指導,
真心感激。

TOP

'If UCase(xD(T)(1)) = "DR" Then
'    If Arr(i, 10) > Arr(i, 11) Then
'        Brr(M, 7) = Brr(M, 7) + Arr(i, 10)
'    Else
'        Brr(M, 7) = Brr(M, 7) + Arr(i, 11)
'    End If
' ElseIf UCase(xD(T)(1)) = "CR" Then
'    If Arr(i, 10) > Arr(i, 11) Then
'        Brr(M, 7) = Brr(M, 7) - Arr(i, 10)
'    Else
'        Brr(M, 7) = Brr(M, 7) - Arr(i, 11)
'    End If
' End If


>>>>>
If UCase(xD(T)(1)) = "DR" Then S = 1 Else S = -1
If Arr(i, 10) > Arr(i, 11) Then C = 10 Else C = 11
Brr(M, 7) = Brr(M, 7) + Arr(i, C) * S

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題