Board logo

標題: 請問SHEET轉換紀錄的問題 [打印本頁]

作者: tonycho33    時間: 2012-2-14 15:55     標題: 請問SHEET轉換紀錄的問題

1.請問一下,如何將A SHEET存到B SHEET當J欄有出現任何值時對應的該列就會複製到B SHEET(空白處延伸)中


2.另一種是當按下按鈕時(對應工單號碼),則該工單對應的所有列就複製到B SHEET空白處

B SHEET要一直累加,不能留空白
謝謝
作者: GBKEE    時間: 2012-2-14 17:43

本帖最後由 GBKEE 於 2012-2-14 17:46 編輯

回復 1# tonycho33
***[D1:F1] 不可為空白***
  1. Sub Ex()'1.請問一下,如何將A SHEET存到B SHEET當J欄有出現任何值
  2.     Dim xText As String
  3.     xText = "<>" '
  4.    Data_Copy 10, xText
  5. End Sub
  6. Sub ExA() '2.另一種是當按下按鈕時(對應工單號碼),則該工單對應的所有列就複製到B SHEET空白處
  7.     Dim xText As String
  8.     xText = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
  9.     Data_Copy 1, xText
  10. End Sub
  11. Private Sub Data_Copy(xF As Integer, xCriteria As String)
  12.     Dim Sh As Worksheet
  13.     Application.ScreenUpdating = False
  14.     Application.DisplayAlerts = False
  15.      With Sheet7   'Sheets("A")
  16.         .AutoFilterMode = False
  17.         .Range("a1").AutoFilter Field:=xF, Criteria1:=xCriteria
  18.         Set Sh = Sheets.Add
  19.         .UsedRange.SpecialCells(xlCellTypeVisible).Copy Sh.[a1]
  20.         Sh.UsedRange.Offset(1).Copy Sheet6.Cells(Rows.Count, "A").End(xlUp).Offset(1)
  21.       'Sheet6->Sheet("B")
  22.         Sh.Delete
  23.         .AutoFilterMode = False
  24.         .Activate
  25.     End With
  26.     Application.ScreenUpdating = True
  27.     Application.DisplayAlerts = True
  28. End Sub
複製代碼

作者: tonycho33    時間: 2012-2-14 18:34

本帖最後由 tonycho33 於 2012-2-14 18:46 編輯

回復 2# GBKEE


    請問『1.請問一下,如何將A SHEET存到B SHEET當J欄有出現任何值時對應的該列就會複製到B SHEET(空白處延伸)中』
有個問題第一次輸入J欄時某一格儲存格可以紀錄
               第二次再輸入時,因為原本第一次還在,所以會在重複記錄到
可以判斷有重複的話就不會紀錄嗎
另外請問
Data_Copy 10, xText

Data_Copy 1, xText
為什麼是1和10差在哪

謝謝
作者: GBKEE    時間: 2012-2-14 20:54

回復 3# tonycho33
"第二次再輸入時,因為原本第一次還在,所以會在重複記錄到"
你又沒說 有篩選過的要刪掉 !!!
.Range("a1").AutoFilter Field:=xF, Criteria1:=xCriteria
Range("a1").AutoFilter:    在 A1橫向的欄位 [A1:J1] 自動篩選  
Field:=1   :篩選的欄位 ->A欄 ; Field:=10   :篩選的欄位 ->J 欄
作者: tonycho33    時間: 2012-2-15 08:17

本帖最後由 tonycho33 於 2012-2-15 10:36 編輯

回復 4# GBKEE

真不好意思
非常感謝你的指導
請問『 有篩選重複的要刪掉』要如何修改
讓B sheet 出現單一的對應欄位就好
  1. Sub 刪除重複1()
  2. Dim i As Long
  3. Application.ScreenUpdating = False
  4. For i = Range("a65536").End(xlUp).Row To 3 Step -1
  5.   If WorksheetFunction.CountIf(Range("a2:a" & i), Cells(i, 1)) > 1 Then
  6.     Cells(i, 1).EntireRow.Delete
  7.   End If
  8. Next
  9. Application.ScreenUpdating = True
  10. End Sub
複製代碼
這個是比對A欄重複的
如果我想改比對A欄&C欄重複的要如何修改呢
謝謝
作者: register313    時間: 2012-2-15 11:07

回復 5# tonycho33

超版,版主大概是沒有作不出來的問題
重點是希望發問者:
1.事先作好功課,把希望的功能描述清楚,不要反反覆覆,改來改去(幾次後真的沒人想幫)
2.附上EXCEL檔案,數據應把所有可能的情形都考慮進來


SHEET B之K欄不可有資料
同一工單若有的完成,有的未完成有時會分開顯示(應可接受吧)
  1. Sub Ex()                       '1.將A SHEET存到B SHEET 當J欄有出現任何值
  2.     Dim xText As String
  3.     xText = "<>"
  4.     Data_Copy 10, xText
  5. End Sub
  6. Sub ExA()                      '2.按下按鈕時(對應工單號碼),該工單對應的所有列就複製到B SHEET空白處
  7.     Dim xText As String
  8.     xText = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
  9.     Data_Copy 1, xText
  10. End Sub
  11. Private Sub Data_Copy(xF As Integer, xCriteria As String)
  12.     Dim Sh As Worksheet
  13.     Application.ScreenUpdating = False
  14.     Application.DisplayAlerts = False
  15.     With Sheet7   'Sheets("A")
  16.         .AutoFilterMode = False
  17.         .Range("a1").AutoFilter Field:=xF, Criteria1:=xCriteria
  18.          Set Sh = Sheets.Add
  19.         .UsedRange.SpecialCells(xlCellTypeVisible).Copy Sh.[a1]
  20.          Sh.UsedRange.Offset(1).Copy Sheet6.Cells(Rows.Count, "A").End(xlUp).Offset(1)
  21.         'Sheet6->Sheet("B")
  22.          Sh.Delete
  23.         .AutoFilterMode = False
  24.         .Activate
  25.     End With
  26.     Call deleterow                       '刪除B工作表之重覆列
  27.     Application.ScreenUpdating = True
  28.     Application.DisplayAlerts = True
  29. End Sub
  30. Sub deleterow()                          '刪除B工作表之重覆列
  31.     With Sheet6
  32.       R = .[A65536].End(xlUp).Row
  33.       For RM = 2 To R
  34.         For MM = 1 To 9                  'SHEET B之K欄不可有資料
  35.             .Cells(RM, 11) = .Cells(RM, 11) & .Cells(RM, MM)
  36.         Next MM
  37.       Next RM
  38.       For I = 2 To R Step 1
  39.         If (WorksheetFunction.CountIf(.Columns(11), .Cells(I, 11)) > 1) Then
  40.            .Rows(I).Delete
  41.            I = I - 1
  42.         End If
  43.       Next
  44.       .Columns(11) = ""
  45.     End With
  46. End Sub
複製代碼
[attach]9592[/attach]
作者: GBKEE    時間: 2012-2-15 11:08

回復 5# tonycho33
  1. Private Sub Data_Copy(xF As Integer, xCriteria As String)
  2.     Dim Sh As Worksheet, Rng(1 To 2) As Range, xRow As Range
  3.     Application.ScreenUpdating = False
  4.     Application.DisplayAlerts = False
  5.      With Sheet7   'Sheets("A")
  6.         .AutoFilterMode = False
  7.         .Range("a1").AutoFilter Field:=xF, Criteria1:=xCriteria
  8.         Set Rng(1) = .UsedRange.SpecialCells(xlCellTypeVisible)
  9.         If Application.CountA(Rng(1)) = Rng(1).Columns.Count Then  
  10.              .AutoFilterMode = False
  11.             MsgBox IIf(xCriteria <> "<>", "找不到 工單 :" & xCriteria, "完成時間  沒有的資料")
  12.             GoTo e
  13.         End If
  14.         Set Sh = Sheets.Add
  15.         Rng(1).Copy Sh.[a1]
  16.         Sh.UsedRange.Offset(1).Copy Sheet6.Cells(Rows.Count, "A").End(xlUp).Offset(1)
  17.         Sh.Delete
  18.         .AutoFilterMode = False
  19.         .Activate
  20.         For Each xRow In Rng(1).Rows.Cells
  21.             If xRow.Row <> 1 Then
  22.                 If Rng(2) Is Nothing Then
  23.                     Set Rng(2) = xRow
  24.                 Else
  25.                     Set Rng(2) = Union(xRow, Rng(2))
  26.                 End If
  27.             End If
  28.         Next
  29.         Rng(2).Delete xlShiftUp
  30.     End With
  31. e:
  32.     Application.ScreenUpdating = True
  33.     Application.DisplayAlerts = True
  34. End Sub
複製代碼

作者: tonycho33    時間: 2012-2-16 10:27

回復 7# GBKEE

不好意思可以在請教一個類似的問題嗎
我想將aa sheet記錄到bb sheet
條件是在aa sheet對應的t 欄有出現值的話
就將對應的A到R欄往下3列複製到bb sheet
但是資料還要保留/不要刪除

例如:當T3出現"已排程"時則A3到R5 三列copy到bb sheet中 空格處
但是A3到R5不要刪除
接下來就以此類推可以仿照這樣記錄

謝謝
作者: GBKEE    時間: 2012-2-16 10:58

回復 8# tonycho33
    當T3出現"已排程"時則
SHEETS("AA") T欄中都沒有資料啊
作者: tonycho33    時間: 2012-2-16 11:11

回復 9# GBKEE


    麻煩謝謝
作者: register313    時間: 2012-2-16 11:42

回復 10# tonycho33
  1. Sub QQ()
  2. BR = 2
  3. With Sheets("aa")
  4.   For AR = 3 To [A65536].End(xlUp).Row Step 3
  5.     If .Cells(AR, "T") = "已排程" Then
  6.        .Cells(AR, "A").Resize(3, 19).Copy Sheets("bb").Cells(BR, "A")
  7.        BR = BR + 3
  8.     End If
  9.   Next AR
  10. End With
  11. End Sub
複製代碼

作者: GBKEE    時間: 2012-2-16 12:58

回復 10# tonycho33
請問 如圖

[attach]9613[/attach]
作者: tonycho33    時間: 2012-2-16 13:45

本帖最後由 tonycho33 於 2012-2-16 15:43 編輯

回復 12# GBKEE
回復 11# register313
F欄是資料欄,隱藏錯了
E欄是預留欄位

請教一下
之前詢問過的問題要彙整
aa→bb 是當T欄輸入『已排程』則匯入bb,並可以一筆一筆新增,已ok
bb→cc 目前是只能欄位轉換,可否當bb有新增時,cc也可以一筆一筆新增,請協助
就是當aa新增一筆T欄輸入『已排程』,該筆3列會轉入bb最後3列,之後轉換到cc時,只轉這一筆,不會全部一起轉換,並排在最下方
cc→dd 則是之前提問的功能,可以一筆一筆新增dd,已ok


所以麻煩第二項功能可以協助
謝謝
作者: register313    時間: 2012-2-16 18:05

回復 13# tonycho33

    a按鈕(aa->bb)拿掉 b按鈕(bb->cc)拿掉  (不能自己用按鈕控制)
=> 當aa工作表T欄新增1個"已排程"時,自動新增到bb工作表及cc工作表
   
[attach]9620[/attach]
作者: tonycho33    時間: 2012-2-16 22:47

回復 14# register313


    感謝協助,這樣的做法的確比我想得還好很多
  感謝




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