• 締切済み

マクロをまとめられますか?

エクセルについて、教えてください。 今はこんな感じになっています。 C3:C10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[13]&R1C[1],main!C1:C30,6,FALSE))" D3:D10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[14]&R1C[1],main!C1:C30,7,FALSE))" E3:E10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[15]&R1C[1],main!C1:C30,8,FALSE))" で作っています。 これをE列よりも先にも作りたいのですが、一個ずつ作ると式ばかりになりますので こういうのをまとめて書くやり方はあるのでしょうか? もし、まとめるような書き方があればアドバイスでも構いませんのでお願いしたいと思います。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

13,14,15のとことか6,7,8とか,列ごとに数字が違うんですから,そのままじゃ一緒には当然できないですね。 作成例: range("C3:E10").formula = "=IF(D$1="""","""",VLOOKUP(OFFSET(O3,0,COLUMN(A3))&D$1,main!$A:$AD,COLUMN(F3),FALSE))" マクロの問題じゃなく,まとめて数式を入れても欲しい結果が得られる,そういう数式を工夫して作成する必要があるってことです。 また別の見方をすると。 C列の式をD列やE列に「隣にコピーするだけで」使えるように,今みたいにP列,R列,T列を参照するんじゃなくP,Q,R列のように隣り合った列で参照できるよう表の作りの方を工夫すれば,一斉に式を入れるのも簡単にできます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>マクロをまとめられますか 普通こんな言い方はしないと思う。 VBAで処理する、などかな。 ーー RiC1方式など見難い。 それにデータ例を挙げて、それについて何がしたいのか質問文で書くこと。 mainシートと結果を入れるシートについて、データ例を書いて質問のこと。 回答者。読者にわかりやすく書くこと。 >E列よりも先にも作りたいのですが これもこれだけでは意味不明。 ーーー VBAでVLOOKUPで検索するのも可能。 ーー コード例を書いておく。 Sheet2 検索表 A2:B4 リンゴ 200 グレープ 180 バナナ 100 求めるデータ Sheet1 リンゴ バナナ グレープ トマト リンゴ モモ バナナ ーーーーー コード 標準モジュールに。 Sub test01() Dim sh1, sh2 Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") d = sh1.Range("A65536").End(xlUp).Row MsgBox d For i = 2 To d On Error GoTo p1 sh1.Cells(i, "B") = WorksheetFunction.VLookup(sh1.Cells(i, "A"), sh2.Range("A2:B4"), 2, False) Next i Exit Sub p1: MsgBox sh1.Cells(i, "A") & "は見つかりません" Resume Next End Sub ーー 結果 Sheet1 リンゴ 200 バナナ 100 グレープ 180 トマト リンゴ 200 モモ バナナ 100 ーーー VBAの経験あるのかな。丸投げで、コピペで済む、答えを求めているのかな。

MIYUMIYU-MIY
質問者

補足

VBAはまだちょっとしかわかりません。丸投げで聞いているというより、関数であれば自分でできる部分も多いので、こういう質問をさせていただきました。VBAでも今回のように参考になるものを教えてもらえれば、少しづつですがやってみますので助かります。

  • TinyPine
  • ベストアンサー率30% (719/2386)
回答No.1

貴方がおっしゃっているマクロとは関数の事ですね。 エクセルのマクロと言うのは別にあり、そのマクロを使用すればいろいろな事が出来ます。 ここら辺を参考に。 http://kokodane.com/macro_kouza.htm

MIYUMIYU-MIY
質問者

補足

今は関数をマクロで動かしてるだけで、VBAとか使って動かせればもっと楽だと思うのですが・・・全部を自分で作れないので難しいんです。

関連するQ&A

  • VLOOKUP関数が#N/Aで使えません

    こんにちは。 エクセルで表を作っています。 VLOOKUP関数を使いたいのですが、エラー#N/Aが出て使えません。とてもシンプルな式なのに、何がだめでできないのか全く解かりません。 式は、=VLOOKUP(C3&D3,A7:D12,4,FALSE)です。 ちなみに、=VLOOKUP(C2,B7:D12,3,FALSE)にはちゃんと反応して数値を返してくれます。違いは検索値だけなのですが、数字になっているので、文字列に指定もしました。違うセルで=C3&D3は返してくれています。 何がいけなくてできないのか、教えていただけると助かります。 よろしくお願いします。

  • エクセルのVBA1について

    お世話になります。 エクセルの文で下記の式があります。 =IF(ISERROR(VLOOKUP($E3822,☆集計!$C:$D,2,FALSE)),"対象外",IF($D3822>=VLOOKUP($E3822,☆集計!$C:$D,2,FALSE),"対象","対象外")) これは、正常に通ります。 これをVBAのFomura関数にしてみした。 Mdata = 3824 Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & "対象外" & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & "対象外" & "," & "対象" & "))" 'Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & Gai & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & Gai & "," & "Tai" & "))" コンパイルエラーとなりませんのが、実行しますと下記の様になります。 #NAME?となり、 式が =IF(ISERROR(VLOOKUP($E3824,☆集計!$C:$D,2,FALSE)),対象外,IF($D3824>=VLOOKUP($E3824,☆集計!$C:$D,2,FALSE),対象外,対象)) となり、対象、対象外が" "で括られません。 そこで、様々なサイトを参考にして下記の様にダブルクォートを重複して書きました。 ""対象""、""対象外""とすると赤字でエラーとなってしまいます。 Formula関数は、初めて使いますが、他の、単純な関数では成功しています。 どのようにすれば、通常の関数と同じ働きでインプットできるのか、ご教授して頂ければ有りがたく存じます。 よろしくお願いします。

  • EXELマクロ計算式

    家計簿を作成中です。前の日にちの残高から収入をたし、支出を引き残高を計算したいのですが、 B列収入、C列支出、D列残高 Range("D3").Select ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]" Range("D4").Select と言う計算式を"D3"などの数値ではなく変数など代入式をつかった式を教えてください。

  • Excel関数をマクロで入力するには?

    例えば次のような表があります。   A   B    C   D 1 金子 横浜 150  150 2 前田     200 3 石田 千葉 100  100 セルD1には =IF(B1="","",C1) セルD2には =IF(B2="","",C2) セルD3には =IF(B3="","",C3) このD列にマクロにてD1から順番に上の式を書込たいのですが、 ここでは、初めからできている式をコピーするのではなく、あく まで上の式を書き込みたいのです。そこで次のようなマクロで やってみましたがうまくいきません。どうマクロを記述したら 良いのでしょうか。 range("D" & 行数 ).Fomula= " =IF(B" & 行数 & "="","",C" & 行数 & ")" こうすると結果はD1にFALSEと表示され入力された式をみてみると =IF(B1=",",B1)となってしまいます。""が"になってしまい、 きちんと=IF(B1="","",C1)となるにはどうすれば良いのか教えて ください。

  • エクセル Rank関数をマクロで

    こんにちは いつもお世話になっています。 Rank関数を作ることが多いのでマクロを作ることにしました。 例えば、C3からc23まで数字が入っています。c3-c23を選択した状態でマクロを動かしたいです。 実際は、特定列の一列の選択されたセルを対象にしたいです。 D列には別のデータが入っているのでC列とD列の間に新規に列を挿入し、新規のD3-D23にRankをいれます。つまり、選択セルの右側に新規の列を挿入したいです。 引数の数値はD3にはC3、D4にはC4…D23にはC23。参照は選択セルのC3からC23。順序は降順です。 一応、マクロ記録してみましたが Sub Macro1() ' ' Macro1 Macro ' Columns("D:D").Select Selection.Insert Shift:=xlToRight Range("D3").Select ActiveCell.FormulaR1C1 = "=RANK(RC3,R3C3:R23C3)" Selection.AutoFill Destination:=Range("D3:D23"), Type:=xlFillDefault Range("D3:D23").Select End Sub よろしくお願いします。

  • エクセルマクロで

    いつもお世話になります mythism様に教えていただいた下記マクロについて もう1つ教えていただきたいのですが t = 3 While Cells(t, 3).Value <> "" t = t + 1 Wend If 1 < t Then Range("c3:n" & Trim(Str(t - 1))).Locked = True End If Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t + 99))).Locked = False Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t))).Interior.ColorIndex = 36 最後の行に黄色の塗りつぶしをしてうまくいきました 塗りつぶしの次の行のE列に Range("E19").Select  19行になったとして VLOOKUPをいれたいのですが ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],漁師名!R2C3:R31C4,2,FALSE)" Range("E19").Selectの部分は どうしたらいいでしょうか よろしくお願いいたします

  • エクセルのif関数のエラー

    エクセルでif関数を使ってデータ処理をしたのですが、上手くいき ません。何がおかしいのかが分からない状態で困っています。 状況  A B C D E 1 : + = ? 関数式 とセルに入力してあるとします。(A1=:,B1=+,C1==,D1=?) 関数式のセルに以下の様に入力しました。 =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) 目的はVLOOKUPだけではD1が空白の時にE1にNAMEと表示されるのを 避ける事でした。 そうすうとD1にA列の数字を入力すると、それに対するB列をE1に 表示するようになるのですが、D1が空白の時はB1が表示されて しまってます。  また一旦D1に入力した後、D1をデリートして空白にしてもE1には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

  • エクセルでオ-トフィルと

    いつも御世話になります Cells(t + 1, 5)のセルに FormulaR1C1 = "=IF(RC[-4]="""","""",VLOOKUP(RC[-4],漁師名!R2C3:R300C4,2,FALSE))" VLOOKUPが入ってます セルから50行コピ-する時は Selection.AutoFillか Copy Paste か、手動でやると一緒のように 思うのですが一般的にはどちらがいいのですか 初心者なのでわかりやすくお願いいたします いつもすみません

  • vlookup関数について

    vlookup関数について教えてください。    A       B         C      D      E        1  あじ    りんご     2  さば    みかん            3  さんま   ばなな        という内容で、D1セルに入力した内容に応じてE1セルに内容を転記させていました。 E1=VLOOKUP(D1$A$1$B3,2,FALSE) 上記で運用していたときはうまくいったのですが、 Cの列にも文字をいれ、E1セルにはCの内容を検索して、B列の内容を転記したいと 思って作りかえるとうまくいきません。 今回の新しいやり方では、 ・A列からの検索はいらない(でも他ファイルから参照されているので、削除、移動はできない) ・E1=VLOOKUP(D1$A$1$C2,2,FALSE)では #N/A となる ・A列からの検索がいらないから、E1=VLOOKUP(D1$B1$C2,1,FALSE) でも #N/A 調べてみたのですがわからなくて・・・ どこがおかしいのか、教えてください。宜しくお願いします。

  • エクセルのマクロの自動記録で、セルに式を入力すると・・・・

    1.マクロの自動記録で、セルに式を入力すると、 仮にセルA1に =(D1+E1)/F1 と入れると、 ActiveCell.FormulaR1C1 = "=(RC[3]+RC[4])/RC[5]" というようにR1C1形式になってしまいます。 他の場合は通常のA1とかE4とかの形式で記録されるのにどうしてでしょうか? 2.これを ActiveCell.Formula = "=(D1+E1)/F1" のような形式で記録させる方法はないのでしょうか?

専門家に質問してみよう