標題:
請教excel 陣列問題
[打印本頁]
作者:
lionliu
時間:
2015-7-12 12:00
標題:
請教excel 陣列問題
各位大哥:
小弟有一個excel陣列問題想要將工作表1,轉到工作表2。
並將品名重排但是一直出問題。
還有是否可以不辨東工作表1就直接產生工作表2內容。
[attach]21368[/attach]
作者:
GBKEE
時間:
2015-7-12 15:41
回復
1#
lionliu
試試看
Option Explicit
Sub Ex()
Dim Rng As Range, i As Integer, Msg As Boolean
Set Rng = Sheets(1).[A2]
With Sheets(2)
.UsedRange.Clear '.UsedRange的範圍 < .Cells的範圍,處裡速度會快些
.Range("a1").Resize(, 4) = Array("Description", "Qty", "Price", "Amount") '一起給值
i = 2 '設定起始值
Do While Rng <> "" 'Rng ="" 迴圈停止
If Msg = False Then
.Cells(i, "A") = Rng.End(xlUp) & ": " & Rng
i = i + 1
End If
.Cells(i, "A") = Rng.Cells(1, 2).End(xlUp) & ": " & Rng.Cells(1, 2) 'item no
.Cells(i, "B").Resize(, 3) = Rng.Cells(1, 4).Resize(, 3).Value 'qty,price, amount
.Cells(i + 1, "A") = Rng.Cells(1, 3) 'Description
i = i + 2
Msg = False '設 po no 不相同
If Rng = Rng.Offset(1) Then Msg = True 'po no 相同
Set Rng = Rng.Offset(1) '下移一列
Loop
End With
End Sub
複製代碼
作者:
lionliu
時間:
2015-7-13 14:25
回復
2#
GBKEE
謝謝gb大哥已可以用了,現在正嘗試把它吃透。
作者:
lionliu
時間:
2015-7-17 10:13
回復
2#
GBKEE
gbkee大哥好
小弟有將資料表和巨集內容進行修正,但是因為對照資料表rng問題,
無法將所有資料過到工作表2,不知應如何修正。[attach]21404[/attach]
作者:
GBKEE
時間:
2015-7-17 12:31
回復
4#
lionliu
這附檔與第1帖附檔格式不一樣.請再詳述這附檔的格式.
作者:
lionliu
時間:
2015-7-17 16:30
本帖最後由 lionliu 於 2015-7-17 16:39 編輯
回復
5#
GBKEE
不好意思,沒敘述清除
我的工作表一增加G、H欄,H只取","右邊的字串。
SHEETS(2) A欄的順序是如下,並將AMOUNT改成公式求得
Description Qty Price Amount
po no : as123 'SHEETS(1)的A欄
item no: ab11201 2 12 24 'SHEETS(1)的B欄
FGHRT
'SHEETS(1)的H欄 ","右邊字串 DSC
acs 102 cdes 'SHEETS(1)的C欄
AB3456
'SHEETS(1)的G欄
item no: ab11200 23 10 230
FGHRT
zxc 2304 df
AB3456
item no: ab11203 24 10 240
ERTT
zxc 2335 df
AC780F
不曉得說明是否清楚
作者:
lionliu
時間:
2015-7-18 08:33
回復
5#
GBKEE
附上修改後壓縮檔內有說明[attach]21408[/attach]
作者:
GBKEE
時間:
2015-7-18 13:06
回復
7#
lionliu
不好意思,看不出附檔的規律性,VBA寫不出來.
作者:
lionliu
時間:
2015-7-18 20:45
本帖最後由 lionliu 於 2015-7-18 20:50 編輯
回復
8#
GBKEE
其實是我不好意思,受到gb大哥的教導獲益良多,我會再努力去完成它
,還是要再此跟你說謝謝。我想若能克服工作表1的ROW值與工作表2的ROW對應問題即可。
作者:
GBKEE
時間:
2015-7-19 07:13
回復
9#
lionliu
第2帖的程式碼
Rng 不就是 第一個工作表的Row
i 是 第二個工作表的Row
Set Rng = Sheets(1).[A2]
05. With Sheets(2)
06. .UsedRange.Clear '.UsedRange的範圍 < .Cells的範圍,處裡速度會快些
07. .Range("a1").Resize(, 4) = Array("Description", "Qty", "Price", "Amount") '一起給值
08. i = 2 '設定起始值
09. Do While Rng <> "" 'Rng ="" 迴圈停止
10. If Msg = False Then
複製代碼
作者:
lionliu
時間:
2015-7-19 11:33
本帖最後由 lionliu 於 2015-7-19 11:35 編輯
回復
10#
GBKEE
剛剛在測試一次,結果是:DO WHILE RNG <>"" ,RNG=11 結束,SHEETS 2 RUN到 ROW =11時尚未結束,
這一段程式會出錯strcomma = WorksheetFunction.Find(",", Sheets(1).Cells(i, 8)),
所以我才這樣懷疑,但是當我停掉此錯誤又能跑完全。
不知此段語法哪裡出錯,還是不應該放在此位置,若有錯前3項又能產生感到非常不解。
作者:
GBKEE
時間:
2015-7-19 14:03
回復
11#
lionliu
是這樣嗎?
R = Rng.Cells(1, 8).Value
strcomma = WorksheetFunction.Find(",", R) '修改位置 H欄,
lenstr = Len(R)
dsc = Right(R, lenstr - strcomma)
複製代碼
作者:
lionliu
時間:
2015-7-20 11:45
回復
12#
GBKEE
還是錯但問題不一樣
[attach]21429[/attach][attach]21430[/attach]
作者:
GBKEE
時間:
2015-7-20 13:45
回復
13#
lionliu
參考看看
Dim R As String '型態為字串
'這裡也要修改 當作用中的工作表是工作表1時 會有 "型態不符合的錯誤
'.Cells(i, 4) = Cells(i, 2) * Cells(i, 3) '修改位置 D欄由計算求值
.Cells(i, 4) = .Cells(i, 2) * .Cells(i, 3) '修改位置 D欄由計算求值
複製代碼
作者:
lionliu
時間:
2015-7-20 15:14
回復
14#
GBKEE
謝謝gb大哥的教導可以了,但是卻有地方有疑問。
r=rng.cells(1,8).value 為何不是 r=rng.cells(
i
, 8).value
作者:
GBKEE
時間:
2015-7-20 20:05
回復
15#
lionliu
看看位置的差異
MsgBox rng.Cells(1, 8).Address '為何不是
MsgBox rng.Cells(i, 8).Address
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)