• ベストアンサー

マクロのシートから関数で転記

 初めまして、よろしくお願いします。  マクロ(?)のシートで上の行から自動で挿入されていくシートから、別のシートで関数を使い、数字を取り出そうとすると、(例=Sheet1!A2)マクロシートで自動でデーターが挿入されていくごとに別のシートに入力している関数までもがつられて指定範囲が下に移動されていってしまいます。(例=Sheet1!A8   A2から順にA3、A4・・A8と言うように)何とか移動しないようにできないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

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

#1のご回答のように、 =INDIRECT("Sheet1!A1") などとすれば、その上行に行挿入されてもA1の1は文字列定数なので 変わりようがありません。 =INDEX(Sheet1!$A$1$A$10,1,1)としても A1の上に行挿入すると =INDEX(Sheet1!$A$2:$A$11,1,1) と1ー>2、10->11と変わります。 実質前と同じセル内容になりますが。 =INDIRECT("Sheet1!A1") の方が明確かなと思いました。もちろん厳密には用途によります。 ーー >マクロ(?)のシートで マクロシートは最近では使われていない言葉ではないですか。 どういう意味でしょう。 http://support.microsoft.com/kb/288400/ja などもあるが エクセル 4.0 マクロの時代のマクロシートでは使われたが15年ぐらい前の話です。今もエクセル 4.0 マクロを使う例が出ますが。 あるいは関数式の入ったシート、VBAモジュール(マクロ)があるということ?いまマクロコードを作っている? しかし関係なさそうですね。

kei__2000
質問者

お礼

回答ありがとうございました。解説まで付けて頂き、大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#176215
noname#176215
回答No.2

=INDEX(Sheet1!A:A,2) でどうですか? 揮発性の関数ではありませんので INDIRECTのように 逐一再計算が入りません。処理の負担を考える場合はお勧めです。

kei__2000
質問者

お礼

回答ありがとうございました。参考にさせて頂きたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#62235
noname#62235
回答No.1

INDIRECT関数を使うのが一番簡単です。 =Sheet1!A2 となっているところを =INDIRECT("Sheet1!A2") と修正してみてください。

kei__2000
質問者

お礼

 回答ありがとうございました。参考にさせて頂きたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELシートの振り分け転記の自動化について

    こんにちは、excel初心者です。 あるexcelシートの中に、数字コードが書いてあるボックス?の中に2種類か、3種類のそれぞれアルファベットコードと表題がそれぞれ書いてあります。 これを別シートにそれぞれの数字コードとアルファベットコードと表題に見やすくするために振り分けたいのですが、 いちいち一つ一つのセルをコピーペストの繰り返しで膨大な時間が掛かりました。 マクロVBAの本を読みましたが、その”数字コードボックス”のアルファベットコードの種類が2,3,4種類と順不同です。 これらの順不同型のセルの塊を自動転記は可能でしょうか? 自動化のイメージとしては、 1;B2セル数字コードを選択、コピー、別シートの数字コード列に移動、貼り付け。 2;元シートにかえって、A5アルファベットコードを選択、コピー、別シートのアルファベットコード列に移動、貼り付け。 3;元シートにかえって、A4表題を選択、コピー、別シートの表題列に移動、貼り付け。 4;元シートにかえって、A8アルファベットコードを選択、コピー、別シートのアルファベットコード列に移動、貼り付け。 5;元シートにかえって、A7表題を選択、コピー、別シートの表題列に移動、貼り付け。 6;元シートにかえって、A11アルファベットコードを選択、コピー、別シートのアルファベットコード列に移動、貼り付け。 7;元シートにかえって、A10表題を選択、コピー、別シートの表題列に移動、貼り付け。―と 8;元シートにかえって、12行B列の数字コードを感知したら、11から2行はすべて削除。 9;次の”数字コードボックス”に移動します。 自分で考えてイメージしただけなのですが、この様な事は可能でしょうか? また、マクロに書くコードはどのようなコードをかけば良いでしょうか? しょ 初心者なりに必死に考えてみましたが、聞いた方が速いと思いこちらにご相談させて頂きました。 何卒宜しくお願い致します。

  • シート名変更のマクロ

    QNo.4400605『エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが』という質問をしてそれについては解決しましたが、作成されたシートの名前を1~40のような数字に変更するマクロが分かりません。作成するシートの枚数は決まってなく、25シートであったり、40シートだったりします。A1:A40に1~40と変更後のシート名を入力して、それをシート名に反映させるマクロは作れたのですが、毎回シート枚数が変わるので「インデックスが有効範囲にありません」と出てしまいます。型としては、元シートがあり、そこでシート数を指定しシートを挿入し、そのできたシートに数字の名前をつけたいと考えています。長々なりましたが教えて下さい。

  • 関数が含まれたセルの行をマクロで挿入する

    セルD2には、IF関数が含まれている、以下の表があります。2行目に行をマクロで挿入して大きな表を作成する予定です。        A       B       C      D      1    納入数   使用m数   納入m   使用m 2                           〔=if(B2>1,C2,"")〕 マクロは、以下のようにして、2行目に行を挿入したのですが、IF文が含まれたものが 挿入できません。どのようなマクロ文にしたらよいかわからず困っています。別シートからコピーする 方法も考えられますが、同じシート内で収めたいと考えています。宜しくお願いします。 Sub 行挿入() ' ' 行挿入 Macro ' ' Range("a2:d2").Insert copyorigin:=xlFormatFromRightOrBelow End Sub

  • Excel,マクロ / 複数のシートでの値の同期

    Excelで複数のシートである選択範囲の値を同期させたいと考えています。関数で指定すれば簡単なのでしょうが、マクロのユーザーがコンピュータ初心者なので、誤って等式が変更されてしまうのが心配です。マクロで解決する方法はあるのでしょうか? 具体的にはSheet1のA3:D500の値をSheet2のB3:E500の範囲に表示し、Sheet1が変更されるとSheet2も自動的に変更されるプログラムをめざしています。どうぞよろしくお願いします。

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • エクセル 関数を使っての自動転記について

    ネットでいくつか検索してみましたが、こちらの検索方法が悪かったためかヒットしなかったので 改めてこちらで質問させて頂きます 今回の質問内容ですが、例えばの話シートAのA列の1行目に1組、2行目に2組、3行目3組と入力してあり、それがシートBのA列にも同じく1組、2組、3組・・と同じように表示したいというものです それだけでしたらイコールを使えば良いのですが、さらにシートAの1組、2組、3組と追加でその下の4行目に4組と入力した場合、シートBにも自動で3組の下の行に4組と入力されるようにしたいというものです (例えばの話なので1行目の文字がりんご、2行目の文字がみかんといったように数字以外になる事ももちろんあります) OFFSET関数やCOUNTA関数を使って、シートAの空白以外のセルを数えて、そのセル数分だけ シートBにデータが表示されるようにしたいのですが具体的な関数の組み合わせが分かりません 不明な点御座いましたら追記にてお答えしますのでお分かりになる方がいらっしゃいましたら ご教授の程お願いします

  • Excelのマクロを使ってワークシート1にワークシート2のセルの値をコ

    Excelのマクロを使ってワークシート1にワークシート2のセルの値をコピーするマクロを作りたいと思っています。 例えば、ワークシート2のA1~A30のセルには1~30の値が順に入っているとします。 それをA1から3の倍数分、つまりA1,A3,A6,A9,・・・,A27,A30の値を ワークシート1のA1~A11のセルに自動で挿入してくれるマクロってどう作ればいいのでしょうか? わかりにくいかもしれませんが、よろしくお願いします。

  • 照合した結果によって決めた値を転記するマクロ

    シート1には A~F列まで値があり、行数は都度相違し約15,000行くらい。 データは2行目から開始です。 シート2には A~AE列まで値があり、行数は都度相違し約5,000~25,000行 あり同じくデータは2行目からです。 シート1の行ごとに A列,B列,C列の順で連結した値と シート2の行ごとに F列,G列,B列の順で連結した値を 照合させます。 その値が (1)シート1にもシート2にもある場合は   シート2のAF列に1と転記 (2)シート1には無いがシート2にはある場合は   シート2のAF列に2と転記 (3)シート1には有るがシート2には無い場合は   シート2のAF列に3と記入 シート2のデータのある行まで 作業を繰り返すマクロの記述を教えてください。 VLOOKUPを使用したマクロを作成しましたが 判定1,2,3の転記がうまく出来ないのと VLOOKUPが重すぎて処理が遅すぎるので 速く処理が出来るとうれしいです。 例 シート1 A2=XXXX B2=1234 C2=5678 シ-ト2 B2=1234 F2=XXXX G2=5678 シート1の値=XXXX12345678 シート2の値=XXXX12345678 照合する ↓(一致なので) シート2のセルAF2に1と転記

  • 複数のSheetのデーターを一枚のシートへ転記させる。

     エクセル初心者です。よろしくお願いします。 例えば      A     B      C    D     E      F 1 2  タイトル  タイトル              タイトル 3    a     b                    f 4 5 6 という全く同じSheetを毎日一枚ずつ作成していくとして、ここで”集計”Sheetに        A        B         C      D      E 1                      タイトル   タイトル  タイトル 2 追加した日付 追加Sheet名     a       b       f 3 追加2枚目  4 追加3枚目 5    " 6    " と言うように、行ごとに追加されていくSheetのデーターを”集計”一枚に自動で転記していきたいと思います。当方全くの初心者ですので、できましたら関数で教えて頂きたいと思います。 追加した日付や追加したSheet名を自動での転記させる方法は関数では無理かもしれませんが、タイトル集計だけでもかまいませんので、わかる範囲でよろしくお願いします。

専門家に質問してみよう