Excel-VBA
なぜ
事務の仕事でauto-fillで終わらない繰り返し作業が生じた page, sheet ごとになる.
Target
2019.03.01 to 03.31までのJ1 to J43 これを一つのtableにまとめて重複を簡単に見つけられるようにする
この操作を2019.02.xlsxから2020.03.xlsxまでやる
My Solution
空白せる含めて,売り伝番号があるJ Col 4 Row to 43 Rowを全て取得し
collection.xlsmに並べる
月ごとのfile(book) , 日毎のsheet, 項目ごとのcell,
これを二重ループで取得する
Sub putbook1901sheet01d5toActiveCell() Dim book1 As Workbook Dim str As String Workbooks.Open "C:\Users\mycompany\OneDrive\_日報\1901.xlsx" Set book1 = Workbooks("1901.xlsx") str = book1.Worksheets("1").Range("d5").Value Workbooks.Open "C:\Users\mycompany\OneDrive\_日報\collection.xlsm" ActiveCell.Value = str End Sub
これで取得はできたが,pageを変数から読み取るのがうまくいかない.
UXMILKの記事を見てみる
Dim page page = 1 str = book1.WorkSheets(page).Range("d5").Value
これで1 pageのd5が取得できない.
とりあえずloopはこれがわかりやすい
これを読むとINDIRECTを使えば引数に計算結果を使えるらしい
Reactでいう { hoge++ } で計算されるような感じかな?
=INDIRECT( A2 & “!B3” ) これにより、A2セルに「Sheet1」と入力されていれば
らしい!!簡単?
これでいけそう
=INDIRECT("'" & A2 & "'!" & B2)
できない
エクセル文字列結合わからん!!!
J忘れてた
=INDIRECT("'" & B5 & "'!J" & C5)
完成
結局VBA使わなかったけど,英語で調べるの強いね