Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2016)
こんな作業をVBAで実行可能でしょうか?
投稿日時: 18/12/25 13:45:25
投稿者: gorby

   2018.12.18
   sddffff..*aai
   rnau02.a-0//7 10000000000 cal wxxire UD 2880
   ---------------------------
   2018.12.18
   sssdddsff*daamp
   rsngple-Et 100000000000 Btap - bule P341
   r00psi07.undredGi/1 100000000000 Bacp - QIX 2001 ^PC-
   -U-SI37 ble:bune-et27 U 29254
   rngsi07.g.bBdle-Eer15 100000000000 : amp - ble P-042
   rgpsi7.sb HGigE0//1 100000000000 mp - EIX 20100
   N-E-SI38 bune-etr15 U 2255
   ---------------------------
  
上記はExcel sheetのB列です。B列にANKで情報が記入されています。
A列に下記の操作を加えたいのですが、VBAで自動化可能でしょうか?
  
<操作手順>
 1.A1セルに下記の関数を貼り付け、B列の情報がなくなる部分まで下にフィルコピー
=IFERROR(LOOKUP(10^16,RIGHT(LEFT(B1,FIND(" BC:",B1)-1),ROW($1:$25))/10^9),"")
   
2.B列には不定期に--------------------が現れます。例えば、B2とB12に--------------------が存在すると、
A12に=TOTAL(A5:A11)を貼り付けます。
 同様に、例えば、B40とB52に--------------------が存在すると、
A52に=TOTAL(A43:A51)を貼り付けます。 以下同じ作業をA列に繰り返します。
 

回答
投稿日時: 18/12/25 14:59:18
投稿者: Suzu

こんにちは。
 

引用:
VBAで自動化可能でしょうか?

条件がきちんとしていれば、自動化可能でしょう。

回答
投稿日時: 18/12/25 15:19:18
投稿者: WinArrow
投稿者のウェブサイトに移動

回答ということではないが、
 
>A12に=TOTAL(A5:A11)を貼り付けます。
「TOTAL」という関数はありませんが・・・・SUM関数の間違いかな?
 
引数が「A5:A11」と書いてありますが、
もし「SUM」関数だとしたら、説明文からすると「A3:A11」ではないかと思います。
 
私見ですが、
総合計も必要ならば、
「SUM」関数より、「SUBTOTAL」関数の方がよいのではないかと思います。
 

投稿日時: 18/12/25 15:54:26
投稿者: gorby

WinArrow さんの引用:
回答ということではないが、
 
>A12に=TOTAL(A5:A11)を貼り付けます。
「TOTAL」という関数はありませんが・・・・SUM関数の間違いかな?
 
引数が「A5:A11」と書いてありますが、
もし「SUM」関数だとしたら、説明文からすると「A3:A11」ではないかと思います。
 
私見ですが、
総合計も必要ならば、
「SUM」関数より、「SUBTOTAL」関数の方がよいのではないかと思います。
 

おっしゃるとおり、SUM関数が正解でした。すみません。
>引数が「A5:A11」と書いてありますが
細かい説明は省略しますが、引数は「A5:A11」であっています。要するに最初の数行は集計の対象からはずすということです。また、総合計は不要なので、SUBTOTALは不要です。

回答
投稿日時: 18/12/25 16:24:57
投稿者: WinArrow
投稿者のウェブサイトに移動

B列セルが"------"の行番号を取得するコードが分かれば、
自分で、コードが記述できますか?
 
ヒントになるコードを提案します。
 
Sub B列セル取得()
Dim xCELL As Range, zCELL As Range
Dim xADD As String
 
    Set xCELL = Columns("B").Find(what:="-----")
    xADD = xCELL.Address
     
    Do
        If zCELL Is Nothing Then Set zCELL = xCELL
        Set zCELL = Union(zCELL, xCELL)
        Set xCELL = Columns("B").FindNext(xCELL)
    Loop Until xADD = xCELL.Address
     
    Debug.Print zCELL.Address
End Sub

投稿日時: 19/04/16 06:25:00
投稿者: gorby

ありがとう。