標題:
[發問]
依條件將資料填入
[打印本頁]
作者:
Genie
時間:
2013-4-1 16:08
標題:
依條件將資料填入
我有一個報表
每天會從資料庫匯出 Sheet1 的資料
請問有沒有快速的方法可以將 Sheet1 的資料整理成 Summary 頁面的樣子?
在 Sheet1 中 Sammple1 所對應的 EQ 每天都會不一樣 可能會增加也可能會減少
我的想法是先把表格拉長 待值都填入後 再將多餘的表格刪除
這樣的作法不曉得行不行?
(每個表格上方都會有一張圖)
請幫幫忙 謝謝∼
[attach]14509[/attach]
作者:
Hsieh
時間:
2013-4-2 12:21
回復
1#
Genie
利用圖片定位
[attach]14512[/attach]
作者:
Genie
時間:
2013-4-9 16:40
回復
2#
Hsieh
謝謝 Hsieh 版主 程式沒有問題
不過有個問題 就是插入的資料都會變成文字格式
是否有辦法將插入的數字變成所需的格式?(ex: 取到小數點第一位)
謝謝∼
作者:
Hsieh
時間:
2013-4-9 18:15
回復
3#
Genie
Sub ex()
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A2].End(xlDown))
mystr = Join(Application.Transpose(Application.Transpose(a.Offset(, 1).Resize(, 3))), ";")
If d(a.Value) = "" Then
d(a.Value) = mystr
Else
d(a.Value) = d(a.Value) & Chr(10) & mystr
End If
Next
End With
With Sheet2
For Each pic In .Pictures
Set a = pic.TopLeftCell.Offset(-1, 0)
If d.exists(a.Value) = True Then
r = a.Offset(23).Row
Do While .Cells(r, "B") <> "" Or .Cells(r, "F") <> ""
a.Offset(23).EntireRow.Delete
Loop
ar = Split(d(.Cells(a.Row, "B").Value), Chr(10))
ar1 = Split(d(.Cells(a.Row, "F").Value), Chr(10))
a.Offset(23).Resize(Application.Max(UBound(ar), UBound(ar1)) + 1, 1).EntireRow.Insert
For i = 2 To 6 Step 4
ay = Split(d(.Cells(a.Row, i).Value), Chr(10))
For j = 0 To UBound(ay)
For x = 0 To 2
If x = 0 Then
.Cells(a.Row, i + x).Offset(23 + j) = Split(ay(j), ";")(x)
Else
.Cells(a.Row, i + x).Offset(23 + j) = Round(Val(Split(ay(j), ";")(x)), 1)
End If
Next
Next
d.Remove .Cells(a.Row, i).Value
Next
End If
Next
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
Genie
時間:
2013-4-19 11:45
回復
4#
Hsieh
謝謝 Hsieh 版主
有做到我需要的格式
非常感謝!!!
不過有地方看不太懂
第 28 行 "For x = 0 To 2" 開始 到第 33 行
這一整段是在描述哪個部份呢?
為什麼要分 x=0 or x≠0?
作者:
Hsieh
時間:
2013-4-19 15:27
回復
5#
Genie
Split(ay(j), ";")會切割出3欄的資料,此陣列索引為0~2
第一個元素是文字,無法使用數值計算
所以,當第一個元素時就直接寫入
第2~3個元素才四捨五入
作者:
Genie
時間:
2013-4-20 10:34
回復
6#
Hsieh
瞭解了
謝謝說明!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)