SEなう!

知識0で客先に送り込まれた文系女の備忘録。日々のことも徒然に。

基本情報技術者試験を倒したい…です!

午前は通るが、午後が…。40点→50点と来たから、60点来い!

苦手分野を潰す

勉強してて思うのは、計算が非常にできないということ。初心に戻ろう!ということで、


情報処理教科書 サクサク解ける情報処理試験の[書き込み式]計算問題ドリル (EXAMPRESS)

これ買いました。

四則計算の復習からあります。馬鹿にするなよーと思って取り掛かったのですが、ハハハ。序盤で間違えちゃった…。

得意分野を作る

SQLとマネジメント系しかないので、増やしたい。

次の春試験こそ!

自分の記事と遭遇

以前、書いたVBAでGETPIVOTDATA関数を使う方法。

職場で、GETPIVOTDATA関数についてGoogle先生に探りを入れていたら、割と上位に出てきました。ありがたいのですが、何か、ギョッとしてブラウザ閉じてしまいました。動揺した。

パソコン表示とスマホ表示が全然ちがーう!いじりたいけど、気力がない…


ちなみに、調べていたのは、ワークシート上で、

=GETPIVOTDATA("合計 / 金額",A3,"取引先","井上貿易")


"井上貿易"を可変にする方法。うまくいかない。

INDIRECT関数がEVALUATEと同じ働きしてくれるんじゃ?と思って

=INDIRECT("GETPIVOTDATA(""合計 / 金額"",A3,""取引先"",""" &C1&""")")

にしたけど、#REFになる。

-----C列----- -----D列------

1 田中商事
2 井上貿易
3 山田情報

D列に数式を縦にコピーして、C1〜C3の値を反映させたい。

(´-`).。oO(手修正やだよー

""が駄目なのか…最後にだけINDIRECTを突っ込めばいいのかなぁ。

VLOOKUPで、シート名を可変にしたい。


=VLOOKUP(A8,[作業ファイル.xlsx]井上貿易!$A$6:$Z$80,18,0)

井上貿易部分(シート名)を可変にする。

INDIRECTを使う

=VLOOKUP(A8,INDIRECT("[作業ファイル.xlsx]"&A1&"!$A$6:$Z$80"),18,0)

  • A1は、任意のセル。
  • A1に参照したいシート名を入れておく。
  • 絶対参照、相対参照は、用途に応じて。

シート名に()が入っているとうまくいかない!

シート名が井上貿易(26年度4月)だと、計算結果が#REFになる。普通にVLOOKUPしてみると、

=VLOOKUP(A8,'[作業ファイル.xlsx]井上貿易(26年度4月)'!$A$6:$Z$80,18,0)

ちょん' 〜'が入るので、これが肝のようだ。

=VLOOKUP(A8,INDIRECT("'[作業ファイル.xlsx]"&A1&"'!$A$6:$Z$80"),18,0)

完成。

シート数が少ないなら、数式をコピーしてシート名を変えればいいけど、50シート近くあったら。

(´-`).。oO(全部シート分VLOOKUPとか…めんどくせぇ

Vineのれいかちゃん。

Vineというアプリ、ご存じですか?

6秒間というショートショートな動画を投稿できるんです。ハマってます。見る専門で。

風景とか街並みを見るのが好きなので、癒やされまくってます。

あー、一ヶ月ぐらい旅行いきたい

アイスランドだそうです。寒そうだ。↓

正統派。

くっそ笑った。
音量に注意。

何回も見ちゃうよー。かわいい子なのに、すごい顔。勢いがたまらん!

VBAでVLOOKUP

が、うまくいかない。

参照範囲を可変にしたいときって、どーしたらいいのか試行錯誤していた。未解決。

WorksheetFunction.VLOOKUP("鈴木貿易",範囲,2,FALSE)

範囲を可変にしたい。
 
範囲を変数にして、

dim C as range
set C = Workbooks("表").Sheets(1).Range("E6:F17")

だといける。でも、Range("E6:F17")が、たまに、G:Hだったりする。

変数aと変数bに列数をカウントさせて代入後、

dim C as range
set C = Workbooks("表").Sheets(1).Range(Cells(6,a),Cells(17,b))

だとNG。

範囲の取得がうまくいってないのかなぁと思って、変数Cに入れたセルの値をデバッグプリントしたら、取得できている。

時間がなくて、その都度書き換えてるけど、めんどくさい。

VBAでGETPIVOTDATA関数が使いたい。

VBAでもワークシート関数が使いたい時は、Object.WorksheetFunction.ワークシート関数。

ただ、ワークシート関数GETPIVOTDATAは呼び出せないので、EVALUATEメソッドを使う。

EVALUATE("式")

式は、文字列として入れる。

GETPIVOTDATAは、これ。
=GETPIVOTDATA("合計 / 金額",A3,"取引先","田中商事")
ぼんやりしたピボットのイメージ↓
f:id:butanoshogayaki:20141108170931j:plain

"取引先"(A列)が"田中商事"の、"合計/金額"を持って来て!なので、戻り値は500。

「A3」は、ピボットテーブル中の左上セルを指定します。

ドッキーング!
EVALUATE("GETPIVOTDATA(""合計 / 金額"",A3,""取引先"",""田中商事"")")

(´-`).。oO(引用符、多くね?

引用符の中にある引用符は、二つにしないといけないようです。

一番外側はEVALUATE

EVALUATE("

GETPIVOTDATA(""合計 / 金額"",A3,""取引先"",""田中商事"")

")

ドッキング前を見ると、GETPIVOTDATAで、"合計 / 金額""取引先""田中商事"が、" "で囲まれているから、それぞれ""合計 / 金額""   ""取引先""    ""田中商事""   になります。

ここまでは、既に習得済み。今日のソリューションは…

(´-`).。oO(列ラベルを可変にしたいなぁ。

合計/金額と合計/個数をスイッチさせたいんです!

時間切れ。ここまで。

--------追記分11/13

とりあえず、列ラベルを変数にしよう。ためしに、金額と置く。

dim r_label as String ’列ラベル
r_label = "金額" 'テスト用

シート名に「個数」と入っているか「金額」と入っているかでIF文で分岐させたと思いますが、忘れた

EVALUATEの中身が文字列だということを念頭に起きつつ進む。

EVALUATE("GETPIVOTDATA(""合計 / 

ここまではそのまま。次は、列ラベルの変数を入れたいので、文字列はここまでだぜ!と宣言しないといけません。一度 " で閉じ、変数をつなげます。

EVALUATE("GETPIVOTDATA(""合計 / & r_label &

ここからまた文字列だぜ!を意味するため、" で始めます。

EVALUATE("GETPIVOTDATA(""合計 / " & r_label & "

""合計 / 金額""の、終わりの""を打っていないので、そこからくっつけて完成!

EVALUATE("GETPIVOTDATA(""合計 / " & r_label & """,A3,""取引先"",""田中商事"")")

(´-`).。oO(引用符、多くね?