返回列表 上一主題 發帖

相同股票自動輸入

本帖最後由 Andy2483 於 2023-3-30 12:56 編輯

回復 1# coafort


    謝謝前輩發表此主題與情境
請問前輩有 殖利率明細對照表嗎?

全部一次帶入比較乾脆,一個個輸入耗時
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# coafort


    謝謝前輩回復
WEB 什麼位址?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 8# coafort


    謝謝前輩提供範例
範例裡沒有 殖利率欄位
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-3-31 11:20 編輯

回復 8# coafort

謝謝前輩回復
後學藉此帖練習觸發與字典,學習方案如下,請前輩參考

執行前:


輸入8的執行結果:


'工作表模組:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
     On Error Resume Next
     Names("_AAA").Delete
     On Error GoTo 0
     If .Row < 3 Or .Value = "" Then Exit Sub
     If .Column Mod 7 <> 1 Then Exit Sub
     Cancel = True
     Names.Add "_AAA", Target.Value
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Row < 3 Or .Count > 1 Then Exit Sub
   If .Column Mod 7 = 4 Then
      Call 填入配息_多個同股名
   
      If Val(Y(.Offset(0, -3) & "|")) > 1 Then
         Application.EnableEvents = False
         Y(.Offset(0, -3) & "/").Value = .Value
         Application.EnableEvents = True
         Application.Goto Y(.Offset(0, -3) & "/")
         Set Y = Nothing
      End If
   End If
   If .Column Mod 7 = 6 Then
      Call 填入配股_多個同股名
   
      If Val(Y(.Offset(0, -5) & "|")) > 1 Then
         Application.EnableEvents = False
         Y(.Offset(0, -5) & "/").Value = .Value
         Application.EnableEvents = True
         Application.Goto Y(.Offset(0, -5) & "/")
         Set Y = Nothing
      End If
   End If
End With
End Sub

'Module1:
Option Explicit
Public Y
Sub 填入配息_多個同股名()
Dim Brr, C&, i&, R&
Set Y = CreateObject("Scripting.Dictionary")
Brr = ActiveSheet.UsedRange
For C = 1 To UBound(Brr, 2) Step 7
   For R = 3 To UBound(Brr)
      Y(Brr(R, C) & "|") = Y(Brr(R, C) & "|") + 1
      If Y(Brr(R, C) & "/") = "" Then
         Set Y(Brr(R, C) & "/") = Cells(R, C + 3)
         Else
            Set Y(Brr(R, C) & "/") = Union(Y(Brr(R, C) & "/"), Cells(R, C + 3))
      End If
   Next
Next
End Sub

Sub 填入配股_多個同股名()
Dim Brr, C&, i&, R&
Set Y = CreateObject("Scripting.Dictionary")
Brr = ActiveSheet.UsedRange
For C = 1 To UBound(Brr, 2) Step 7
   For R = 3 To UBound(Brr)
      Y(Brr(R, C) & "|") = Y(Brr(R, C) & "|") + 1
      If Y(Brr(R, C) & "/") = "" Then
         Set Y(Brr(R, C) & "/") = Cells(R, C + 5)
         Else
            Set Y(Brr(R, C) & "/") = Union(Y(Brr(R, C) & "/"), Cells(R, C + 5))
      End If
   Next
Next
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 12# coafort


    謝謝前輩回復
測試檔如下,請前輩參考

ETF成分股_20230331_1.zip (40.32 KB)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 15# coafort


    世事難料,千金難買早知道,情境難測,請前輩撥空研究一下,自己試改看看
不順遂如意時有論壇眾前輩可以請教,一起學習
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-4-6 09:05 編輯

回復 19# coafort


    謝謝前輩
後學學藝不精又偷懶的結果
1.請將兩處的程式碼   If Y(Brr(R, C) & "/") = "" Then 改為
If Not Y.Exists(Brr(R, C) & "/") Then

Sorry
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 21# coafort


    謝謝前輩不嫌棄陪後學一起學習,假日不方便測試回復,讓前輩久等了
謝謝前輩
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題