変数をうまく使えずに悪戦苦闘しています。
多分、まったく内容がなっていないというお叱りを受けそうですが、
今私が考えられるところはここまでです。
何が原因で動かないのか、分かりません。
よろしくお願いします。
確認用シートにデータがあります。データは個人カウントと月ごとの集計で成り立っています。
そのデータの個人名と月で検索した回答を集計用シートに表示させたいと考えています。
それで次のようなコードを書いてみましたが、思い通りの結果を出すことができませんでした。
式は直接式を入力すると正しい答えが出るのですが、コードを実行させた場合は#NAME?に
なってしまいます。こういう場合は変数は使えないのでしょうか?
また、集計で得た結果を結果シートに値のみ貼り付けてエビデンスを残したいのですが、
これもうまくいきません。
貼り付けた後順位の項目でソートさせたいのですが、これもうまくいきませんでした。
また、ピボットテーブルに毎月のデータを入力させて、ピボットグラフを作るように
テーブルとグラフをあらかじめ作成し、前月のデータを集計させたかったのですが、
これも見事に失敗しました。
ところで、もし当月が1月の場合は12月を見るようにさせたいのですが、IF文がうまく
できません。IF文を認識してくれていないので、END IFにするとIFがありませんとエラーが
返ってきます。
まったくお手上げです。
よろしくお願いします。
Sub カウント()
'式の割当
Dim a As Long, b As Long, d As String, e As String
Dim getRange As String, getpreRange As String
a = Sheets("集計用").Range("B87").Value
b = a - 1
d = "_" & a & "月"
e = "_" & b & "月"
If a = 1 Then b = 12
getRange = "=INDEX(確認用データ,H89,d)"
getpreRange = "=INDEX(確認用データ,H89,e)"
Sheets("集計用").Range("C89").Formula = getRange
Sheets("集計用").Range("D89").Formula = getpreRange
Sheets("集計用").Range("C89:D89").Copy Sheets("集計用").Range("C90:C128")
'結果シートに値のみ貼り付け, 順位で並べ替え
Sheets("集計用").Range("B87:E128").Select
Selection.Copy
Sheets("結果").Range("A1").End(xlRight).Offset(0, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Sort Key1:=Range("順位"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
'前月のデータからピボットテーブルを作成する
Dim r As String
r = a & "月"
ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _
"ピボットテーブル2").PivotFields(r), "合計 / r", xlSum
End Sub
補足
保育の記録や・・・なので記録と反省ものが月末にたまっている・・という意味です。 わかりにくい書き方すみませんでした。 書き込みありがとうございます。