Board logo

標題: [發問] 依條件將資料填入 [打印本頁]

作者: 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
  1. Sub ex()
  2. Application.ScreenUpdating = False
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With Sheet1
  5.   For Each a In .Range(.[A2], .[A2].End(xlDown))
  6.   mystr = Join(Application.Transpose(Application.Transpose(a.Offset(, 1).Resize(, 3))), ";")
  7.      If d(a.Value) = "" Then
  8.         d(a.Value) = mystr
  9.         Else
  10.         d(a.Value) = d(a.Value) & Chr(10) & mystr
  11.      End If
  12.   Next
  13. End With
  14. With Sheet2
  15.   For Each pic In .Pictures
  16.     Set a = pic.TopLeftCell.Offset(-1, 0)
  17.     If d.exists(a.Value) = True Then
  18.     r = a.Offset(23).Row
  19.     Do While .Cells(r, "B") <> "" Or .Cells(r, "F") <> ""
  20.       a.Offset(23).EntireRow.Delete
  21.     Loop
  22.        ar = Split(d(.Cells(a.Row, "B").Value), Chr(10))
  23.        ar1 = Split(d(.Cells(a.Row, "F").Value), Chr(10))
  24.        a.Offset(23).Resize(Application.Max(UBound(ar), UBound(ar1)) + 1, 1).EntireRow.Insert
  25.        For i = 2 To 6 Step 4
  26.          ay = Split(d(.Cells(a.Row, i).Value), Chr(10))
  27.          For j = 0 To UBound(ay)
  28.            For x = 0 To 2
  29.              If x = 0 Then
  30.                 .Cells(a.Row, i + x).Offset(23 + j) = Split(ay(j), ";")(x)
  31.                 Else
  32.                 .Cells(a.Row, i + x).Offset(23 + j) = Round(Val(Split(ay(j), ";")(x)), 1)
  33.              End If
  34.            Next
  35.          Next
  36.          d.Remove .Cells(a.Row, i).Value
  37.        Next
  38.     End If
  39.   Next
  40. End With
  41. Application.ScreenUpdating = True
  42. 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/)