• ベストアンサー

Excel 別のシートから値を取得する方法

Excel2003を使用しています。 シート1のA列3行から同33行に、シート2のA列2行から32行までの内容を取得したいのですが、以下のように1行ずつ行っています。  Range("A3").Value = Worksheets("シート2").Range("A2") 1行ずつではなく、いっぺんに取得する方法はないでしょうか・・? (取得する範囲は常に同じ行数です) いろいろ検索してみたのですが、見つけられなかったので質問させていただきました。 よろしくお願いします。

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

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

Forで変数に行数を代入してループ処理させたらどうでしょう? For n = 0 to 30 Cells(n + 3, 1).Value = Worksheets("シート2").Cells(n + 2, 1) Next

pon_s
質問者

お礼

回答ありがとうございます。 できました! お世話になりました。

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

その他の回答 (1)

  • mono-001
  • ベストアンサー率32% (13/40)
回答No.1

sheet1のA3に =Sheet2!A2 と入力してセルの右下を左クリックしたままA33まで 範囲を広げれば取得できます

pon_s
質問者

お礼

回答ありがとうございます。

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

関連するQ&A

  • VBAで複数の行のナンバーを取得し、その行の列の値を参照して値を入れる

    下記のことをしたいのですが、調べてもわかりません。 どなたか教えてください。 よろしくお願いします。 内容: エクセルシートのA列の値が11である行ナンバーを取得(複数ある可能性があります)する。 その行のE列(5列目)の値と他のテーブルの値を参照して所定の値をA列の値が11である行のE列(5列目)に返す。 以下のVBAを書いてみましたがうまくいきません。 ----------------------------------------------------------------- Dim ROWCOUNT As Integer Dim row_array() As Variant Dim i As Integer '全行数を取得 ROWCOUNT=Worksheets("sheet1").Range("A1",Range("A65536").End(xlUp)).Count For i = 1 To ROWCOUNT If Cells(i, 1).Value = 11 Then Cells(i,1).Offset(0,5).Value=WorksheetFunction.VLookup(Cells(i, 1).Offset(0, 5).Value, Worksheets("sheet2").Range("A1:H1786"), 3, False) End If Next I

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • Excelで、A列、B列の値を新しいシートに3行ごとにどんどん貼り付け

    Excelで、A列、B列の値を新しいシートに3行ごとにどんどん貼り付ける。 という事をしたいのですが、VBAを始めたばかりなので上手く書くことが出来ません。 例)    A列   B列   101  りんご    102  ぶどう   103  オレンジ   104   桃   105  バナナ      ・      ・      ・ これを別のシートに    A列   B列   101  りんご (2行あける)   102  ぶどう (2行あける)   103  オレンジ (2行あける)    104   桃 (2行あける)    105  バナナ      ・      ・      ・ と表示したいのです。 現在は下記のようなリンクで表示していますが、 件数が少ない時は4件から多い時は800件と幅があります。 出来れば表の一番下(空欄になる部分)まで繰り返し処理をしたいと思っています。 セルの中身が表示されるならリンクでもコピーでも構いません。 現在のマクロ Sub Macro2() Worksheets("Sheet2").Select Range("C11").Value="=Sheet1!A2" Range("C14").Value="=Sheet1!A3" Range("C17").Value="=Sheet1!A4" Range("C20").Value="=Sheet1!A5" Range("C23").Value="=Sheet1!A6" Range("H11").Value="=Sheet1!B!" Range("H14").Value="=Sheet1!B2" Range("H17").Value="=Sheet1!B3" Range("H20").Value="=Sheet1!B4" Range("H23").Value="=Sheet1!B5" End sub 45行分まで書いたところで途方に暮れております。 よろしくお願いいたします。

  • InputBoxの値で検索して転記するマクロ

    1.InputBoxを3回表示させます。 2.ユーザーに入力してもらいます。 入力できるのは半角英数字のみでそれ以外は エラーメッセージを出したいです。 3.1回目は18桁か22桁以外の場合、 2回目と3回目は4桁以外の場合はMsgBoxを表示して 再入力を促します。 4.InputBoxに入力された値の3個を連結した値で Sheet2のA列を検索して 合致したらその行のG列の値を見ます。 5.G列に"済"とあったら MsgBoxを表示して 中止するか継続するか判断します。 6.継続した場合 その該当行の各列の値をSheet1にそれぞれ転記します。 Sheet2の該当行のB列→Sheet1のセルB3 Sheet2の該当行のC列→Sheet1のセルC3 Sheet2の該当行のD列→Sheet1のセルD3 Sheet2の該当行のE列→Sheet1のセルE3 Sheet2の該当行のF列→Sheet1のセルF3 7.かつSheet2の該当行のG列に 済 と転記します。 すでに済が記入されている場合は上書です。 以下のように作成しましたがエラーで動かなくて動作確認が出来ません。 どう直せばいいのか教えてください。 イレギュラー時の対応処理が必要だとも思うのですが動作しない為 思いつきません。 記述が滅茶苦茶なのですがこれが限界です。申し訳ありません。 Sub 表示板作成() Dim 検索値1 Dim 検索値2 Dim 検索値3 Dim 検索値4 Dim 判定値 Dim 判断 Dim 記録 Dim 確認 検索値4 = 検索値1&検索値2&検索値3 Do 検索値1 = Application.InputBox("型番を入力してください") If Len(検索値) < 18 Then MsgBox "18桁未満です。再入力しますか?" Loop Else Exit Do '検索値2と3も上記と同じ記述をここへ入れる '(現在省略) End If 判定値 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) If 判定値 = "済" Then 判断 = MsgBox("発行済みです。再度データ取得しますか?", vbYesNo) Else Select Case 判断 Case vbNo Exit Sub Case vbYes Range("B3").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 2, 0) Range("B4").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 3, 0) Range("B5").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 4, 0) Range("B6").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 5, 0) Range("B7").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 6, 0) End Select End If 記録 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) 記録.Value = "済" 確認 = MsgBox("これは●●用です。いいですか?", vbYesNo) Select Case 確認 Case vbNo Exit Sub Case vbYes Call 印刷 End Select End Sub

  • EXCEL VBA オートフィルタの値コピー

    ほぼ初心者ですのでよろしくお願いします。 Sheet2にデータがありそのデータをオートフィルタで日付から抽出してSheet3にコピーして、その後Sheet1の表に該当項目をコピーする際についてですが、オートフィルタ後、1日当たり行は10~15行あります、そのうちG列にはデータが通常2つのセルに値があるだけでほかの行は空欄です。(日によってどの行になるかはわかりません)この2つのセルの値をそれぞれSheet1のM10とM11コピーしたいのです、 ちなみにセル番地は下記の方法で取得できましたが、値の取得ができません。 Range("D1").Value = Worksheets("sheet1").Range("A1").End(xlDown).Row Range("D2").Value = Worksheets("sheet1").Range("A65536").End(xlUp).Row Sub データコピー() Range("AB17") = Format(Sheet3.Range("A3").Value, "yy") Range("AE17") = Format(Sheet3.Range("A3").Value, "mm") Range("AH17") = Format(Sheet3.Range("A3").Value, "dd") Range("AK17") = Format(Sheet3.Range("A3").Value, "aaa") Range("D22") = Sheet4.Range("D3").Value Range("D25") = Sheet4.Range("E3").Value Range("H22") = Sheet4.Range("F3").Value Range("D22") = Sheet4.Range("G3").Value Range("L22") = Sheet4.Range("K3").Value Range("Q22") = Sheet4.Range("L3").Value Range("U22") = Sheet4.Range("M3").Value .   .   . End Sub

  • 【マクロ】特定シートから値を抽出し、別シートへ反映して印刷

    【マクロ】特定シートから値を抽出し、別シートへ反映して印刷 このようなマクロを組みたいです。 作成しましたがうまく動きません。 どなたか修正していただけませんか? 【やりたいこと】 シート名1『データベース』 シート名2『通知書』 (1)『データベース』  4行目からデータベースが作成された表  C列は社員番号の列 ↓ (2)『データベース』シートのA列に『1』のフラグを立てる ↓ (3)『通知書』のセルB1に自動的に(2)で立てた行のC列の社員番号が反映され  同時に通知書シートを印刷をする。 【組んでみたマクロ】 Dim i As Integer 'カウント用変数 Dim lastrow As Integer '最終行が入る変数 i = 4 '最初に始まる行数を指定 lastrow = ActiveSheet.Range("A65536").End(xlUp).Row '最終行を取得する For i = 4 To lastrow '最終行まで繰り返す If Worksheets("データベース").Range("A" & i & "") = 1 Then 'A列に「1」があったものは以下の処理をする '別シートの特定セルを取得する Worksheets("通知書").Range("B1") = "=INDIRECT(""データベース!""&""C" & i & """)" '社員番号 '印刷する Sheets("通知書").PrintOut Else 'A列に「1」がなかったら以下の処理をする End If 'A列に何かあるかの判別終了 Next i '繰り返しの終わり。i(カウント用変数)に1を足す End Sub

  • 別のシートにあるリストを表示する方法

    すみません 検索シートから生徒シートの名前を検索したら検索シートに返されるようなマクロはどの様に書けばいいでしょうか? イメージとしては下記のような感じです。できれば左2行目3行目の検索結果も返したいです。 よろしくお願い致します。 Sub 名前検索() Dim myrange As Range Worksheets("生徒シート").Activate Set myrange = Range("C4:AG300").Find(what:=Range("C100").Value, LookIn:=xlValues) If Not myrange Is Nothing Then Worksheets("検索シート").Activate Cells(102, "C").Value = myrange.Offset(, -3).Value Else MsgBox "該当者なし" End If End Sub

  • エクセル 別シートから値を検索して挿入 VBA

    いつもお世話になっております。 VBAにて、Sheet1 の【原価】に【商品】をキーにしてSheet2の【原価】を検索して挿入するコードを作成しました。 元々Shee1の【原価】にはすでに数値が入っていますが、下記のコードを実行すると上書きする処理のため、検索にヒットしない商品の【原価】はエラー【#N/A】となります。 ※画像参照願います。 目的はヒットする商品名の【原価】のみが更新される、 ヒットしない場合エラー【#N/A】を出さないようにする。 改良をご教示頂ければ助かります。 Sub データ検索() Application.ScreenUpdating = False Dim I As Long   I = 2 Do While Range("A" & I).Value <> ""  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = _   Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, Worksheets ("Sheet2").Range("A2:B65535"), 2, 0)  I = I + 1 Loop Application.ScreenUpdating = True End Sub

  • 別のシートから値を取得するとき

    Worksheets("シート名").Activate 上記のを行ってから別シートの値を取得するのですが、 この処理を行うと指定したシートへ強制的にとんでしまいます。。。 ※イメージ For ~ To ~   Worksheets("シートA").Activate   シートAの値取得        :   Worksheets("シートB").Activate   シートBの値取得 Next このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。 シートを変えずに他のシートから値を取得する方法はないのでしょうか。 教えてください!

  • シート間の値の貼り付け。 スマートにしたい。

    こんばんは。 エクセルのシート1の[d7]から シート2の[最終行]からカウントした数分(下の場合はシート1[d7]の値をc列に3行分)貼り付けるには下記のコードでOKと伺ったのですが、 この作業を何度も繰り返しさせているうちに動作が重くなってしまったような気がするのでが、シート1の[b2](貼り付け時に日付)[b3](VLOOKUPの計算式が入っているので値のみ)[b4](時刻)の形式でシート2のそれぞれ、隣接するd,e,l列に3行づつ貼り付けたいのですが、 何か方法は、ありますでしょうか。(それぞれ貼り付けたい形式も異なります。) n=3 Worksheets("Sheet1").Range("d7").Copy _ Destination:=Worksheets("Sheet2").Range("c65536").End(xlUp).Offset(1, 0).Resize(n, 1) ↓動作確認ができなくなってしまったので、試していないのですが、 上の式の値のみ貼り付け方法は下記でよいのでしょうか。 '値のみ貼り付け Set WWR1 = Worksheets("Sheet1").Range("c7") Set WWR2 = Worksheets("月度集計").Range("c65536").End(xlUp).Offset(1, 0).Resize(n, 1) WWR2.Value = WWR1.Value 宜しくお願い致します。

専門家に質問してみよう