返回列表 上一主題 發帖

[發問]如何使用VBA將有重複參照值貼到不同worksheet

回復 1# s5512765
  1. Range("B6:B20" & OutputLastRow).Formula
  2.    .Range("C6:C20" & OutputLastRow).Formula =
複製代碼
工作表上設的公式 當職務編號 的BBItem3,BItem4 小於 20-6 ,所套的公式, 當然有錯誤值

試試看
  1. Option Explicit
  2. Sub 按鈕9_Click()
  3.     Dim sourceSheet As Worksheet         '**  變數型態為工作表物件
  4.     Dim outputSheet As Worksheet         '**  變數型態為工作表物件
  5.     'What are the names of our worksheets?
  6.     Set sourceSheet = Worksheets("competencylist_2016")
  7.     Set outputSheet = Worksheets("inserttext")
  8.      outputSheet.Range("B6:I" & Rows.Count) = "" '**清除舊有的資料
  9.    
  10.     With sourceSheet
  11.              '**Count 屬性 傳回一個 Long (長整數),等於在一個集合物件中的物件數目。唯讀。
  12.              '** Columns.Count  -> 工作表的所有欄數
  13.             
  14.              .Cells(1, Columns.Count - 3).Resize(, 4) = Array(.Range("A1"), "", .Range("C1"), .Range("D1"))
  15.               '** 寫入字串  BBItem1 ,"", BBItem3, BBItem4
  16.             
  17.              .Cells(2, Columns.Count - 3) = outputSheet.Range("H2")  '**職務編號
  18.             
  19.              '**進階篩選
  20.              .Range("A1").CurrentRegion.AdvancedFilter xlFilterCopy, .Cells(1, Columns.Count - 3).Resize(2), .Cells(1, Columns.Count - 1).Resize(1, 2)
  21.             
  22.             '.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Cells(1, Columns.Count - 3).Resize(2), CopyToRange:=.Cells(1, Columns.Count - 1).Resize(1, 2)
  23.              '** AdvancedFilter 範圍的進階篩選 , xlFilterCopy  篩選到其他位置
  24.              '**AdvancedFilter 方法   基於準則範圍從資料清單中篩選或複製資料。如果初始選定為單個儲存格,則使用儲存格目前的區域x為Variant。
  25.              '**  expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
  26.              '**expression      必選。該運算式會傳回 [套用於] 清單中的其中一個物件。
  27.               '**  Action     必選的 XlFilterAction 資料類型。
  28.             '** XlFilterAction 可以是這些 XlFilterAction 常數之一。 xlFilterCopyxlFilterInPlace
  29.             '**CriteriaRange     選擇性的 Variant。準則範圍。如果省略此引數則無準則。
  30.             '**CopyToRange     選擇性的 Variant。如果 Action 為 xlFilterCopy,此引數指定被複製列的目標範圍。否則忽略此引數。
  31.             '**Unique     選擇性的 Variant。若為 True,則僅篩選唯一的記錄;若為 False,則篩選出所有符合準則的記錄。預設值為 False。
  32.             
  33.             With .Cells(1, Columns.Count - 1).Resize(1, 2).CurrentRegion
  34.                 If .Rows.Count > 1 Then
  35.                     outputSheet.Range("B6").Resize(.Rows.Count - 1, 2) = .Rows("2:" & .Rows.Count).Value
  36.                     With outputSheet.Range("H6").Resize(.Rows.Count - 1, 2)
  37.                         .Columns(1) = "=RC[-2]-RC[-3]"         '公式 : 用 R1C1相對位置
  38.                         .Columns(2) = "=RC[-2]-RC[-4]"
  39.                     End With
  40.                 End If
  41.                 End With
  42.             .Cells(1, Columns.Count - 3).Resize(, 4).EntireColumn = ""  '範圍: 清除字串
  43.     End With
  44. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題