【最大10000ポイント】当たる!!質問投稿キャンペーン!

表1(A1:A20)に飛び飛びに入ったデータを表2(E11:E30)に上から順に空白が無いように転記するマクロは下記の通りなんとか作れました。
ただし、これが正しいやり方かどうかは自信がありませんのでもっといい方法があればご教示ください。
次にこれが、表1がA1:B10と2列になっており、表2も同じくE11:D20と2列になっている場合のやり方(E11から始まりE20まできたら次はD11以降に転記する)が見当がつきません。どのように記述すればいいのでしょうか?

Sub 転記()
Dim i As Integer, n As Integer
n = 10
With Worksheets("DATA1")
For i = 1 To 20
If .Range("A" & i) <> "" Then
n = n + 1
.Range("E" & n) = .Range("A" & i)
End If
Next i
End With
End Sub

よろしくお願いします。

A 回答 (3件)

プログラムなんて動けばいいのです。


分かりやすさは、その次。

Dim i As Integer, n As Integer
Dim a,b as string
Dim i2 As Integer, n2 As Integer
n = 10
a="A"
b="E"
i2=0
n2=0
With Worksheets("DATA1")
For i = 1 To 20
if i=11 then
a="B"
i2=10
end if
If .Range(a & i - i2) <> "" Then
n = n + 1
if n=21 then
b="D"
n2=10
end if
.Range(b & n - n2) = .Range(a & i - i2)
End If
Next i
End With
End Sub

未確認ですが・・・。

あと cells を使う方法もあります。
    • good
    • 0
この回答へのお礼

おそくなってすみません。
出来ました!
なるほど、こういう方法なんですね。ありがとうございました。

お礼日時:2003/05/16 14:45

短くなるように


Sub test01()
Dim c As Range
Dim r(3)
r(1) = 1: r(2) = 1
For Each c In Worksheets("sheet1").Range("a1:b10")
If c = "" Then
Else
Worksheets("sheet2").Cells(r(c.Column), c.Column) = c
r(c.Column) = r(c.Column) + 1
End If
Next
End Sub
'--------
Sheet1が何列になろうとも
(A)Dim r(3)の3を4等と、r(2)=1のところをr(3)=1、・・などと増やす。
(B)Range(A1:N50)等と増やす
だけで手直しが少ないです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
それぞれの列だけをみれば上に詰まったのですが、残念ながら、列をまたいではなりませんでした。

お礼日時:2003/05/16 14:47

こんにちは。

私はEXCELの機能をなるべくそれを生かすようにします。たとえば、ワークシート関数をつかって、次のようにFor-Next文を廃止できますね。

Sub 転記()
Range("E11").FormulaR1C1 = "=INDEX(R[-10]C[-4]:R[8]C[-4],ROW()-10,1)"
Range("E11").AutoFill Destination:=Range("E11:E20"), Type:=xlFillDefault
Range("E11:E20").Value = Range("E11:E20").Value
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
でも残念ながら思った様にはなりませんでした。

お礼日時:2003/05/16 14:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q複数条件が一致で別シートに転記【エクセルVBA】

エクセルでセルの条件が複数一致したら別シートに転記される方法をお教えください。
シートを2枚用意して、配達日ごとに一覧化したいのです。
事前に用意したシート(配達表)の“配達”と“配達時間”が一致したら
その方の名前と注文個数を右側に反映したいのですが・・・

注文データが多すぎて困っています。
宜しくお願いします。

■シート名:注文データ
   A    B    C    D    E
------------------------------------------------
1 しめい  対応   配達日   時間   個数
------------------------------------------------
2 たけだ  配達  6/20(月) 13:00  2個
3 みうら  配達  6/18(土) 14:00  4個
4 らもす  郵送  6/20(月)  ―   5個
5 いはら  配達  6/20(月) 14:30  8個
6 かつや  配達  6/20(月) 15:00  6個
7 みうら  郵送  6/20(月)  ―   4個

■シート名:配達表
    A     B    C
------------------------------------
1  配達   6/20(月)
------------------------------------
2  12:00
3  12:30
4  13:00
5  13:30
6  14:30
7  15:00
8  15:30
9  16:00

マクロを実行すると・・・
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

■シート名:配達表
    A     B    C
------------------------------------
1  配達   6/20(月)
------------------------------------
2  12:00 
3  12:30
4  13:00    たけだ   2個
5  13:30
6  14:00    みうら   4個
6  14:30   いはら   8個
7  15:00   かつや   6個
8  15:30
9  16:00

エクセルでセルの条件が複数一致したら別シートに転記される方法をお教えください。
シートを2枚用意して、配達日ごとに一覧化したいのです。
事前に用意したシート(配達表)の“配達”と“配達時間”が一致したら
その方の名前と注文個数を右側に反映したいのですが・・・

注文データが多すぎて困っています。
宜しくお願いします。

■シート名:注文データ
   A    B    C    D    E
------------------------------------------------
1 しめい  対応   配達日   時間   個数
-...続きを読む

Aベストアンサー

こういうのは「複数条件による抜き出し問題」だ。
関数で出来ればおなじみのやり方で良いのだが、既に出ているように式が長く複雑で、初心者には何をやって居るかわからない式になる。毎度週に数回このタイプの質問が出て、同じようなタイプの答えになる。Googleででも「imogasi方式」で照会すれば、過去の沢山の例と回答(そのタイプも)が出てくる。
ーー
まず初心者や急ぐ場合はデーターフィルターフィルタオプションの設定で済ませられないか勉強すべきだ。
ーー
本来、こういう仕事の関連のエクセル表は、VBAを勉強してそれを使うべきと思う(既に回答も出ているようだ)
関数で抜き出し問題や表の組み換えは、VBAで無いと、天下りの長い式をコピペで使うだけになる。
ーー
私が紹介している「imogasi方式」では、Sheet2に時刻の所定の行に出す問題なので複雑になりすぎる。
ーー
VBAでやってみる。
例データ
しめい対応配達日時間個数
たけだ配達6月20日13:002個
みうら配達6月18日14:004個
らもす郵送6月20日ーー5個
いはら配達6月20日14:308個
かつや配達6月20日15:006個
みうら郵送6月20日ーー4個
(注意)
「ーー」セルは空白とする
「月日」列は、エクセルの年月日を入れておくこと(日付シリアル値(わかりますか)) 文字列では不可
6/20(月) の様な表示は、表示形式の設定でやること(エクセルの常識)  m/d(aaa)
時間の列も時刻シリアル値で入れてあるとする。文字列では不可
ーー
コード
標準モジュールに
Sub test01()
Dim sh1, sh2
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
d = sh1.Range("A65536").End(xlUp).Row
On Error Resume Next
For i = 2 To d
'--条件をかけて選別
If sh1.Cells(i, "B") = "配達" And sh1.Cells(i, "C") = sh2.Range("B1") And _
sh1.Cells(i, "D") <> "" Then
t = sh1.Cells(i, "D")
'---Sheet2で時刻行を探す
For r = 2 To 30
If sh1.Cells(i, "D") = sh2.Cells(r, "A") Then Exit For
Next r
'--該当行の値をSheet2の時刻該当行セット
Sheet2.Cells(r, "B") = sh1.Cells(i, "A")
Sheet2.Cells(r, "C") = sh1.Cells(i, "E")
End If
Next i
End Sub
ーー
実行結果
Sheet2
配達6月20日
12:00
12:30
13:00たけだ2個
13:30
14:00
14:30いはら8個
15:00かつや6個
15:30
16:00
・・・・・・

こういうのは「複数条件による抜き出し問題」だ。
関数で出来ればおなじみのやり方で良いのだが、既に出ているように式が長く複雑で、初心者には何をやって居るかわからない式になる。毎度週に数回このタイプの質問が出て、同じようなタイプの答えになる。Googleででも「imogasi方式」で照会すれば、過去の沢山の例と回答(そのタイプも)が出てくる。
ーー
まず初心者や急ぐ場合はデーターフィルターフィルタオプションの設定で済ませられないか勉強すべきだ。
ーー
本来、こういう仕事の関連のエクセル表...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QVBAでセルデータの転記(文字列)

VBAでセルのデータを下記のように他のセルに持っていく場合、文字として入れてある数字(例えば先頭に0がつくようなもの)は、自動的に数値に変えられて0が消えてしまいます。
また、長いものは指数表示になってしまい、15桁を超えるものは後ろが0になってしまいます。
持っていく先のセルを文字列に設定しておけばいいのでしょうが、持っていく元データが全て文字列ではなく、数値の場合もあります。
元データが数値であれば数値として、文字列であれば文字列として持っていくにはどうすればいいのでしょうか?

Sub test()
Cells(3, 3).Value = Cells(1, 1).Value
End Sub

Aベストアンサー

#3 maruru さま

>文字列を表す接頭文字「'」は、PrefixCharacterプロパティで参照出来ます。
>(参照だけで、設定は出来ません。)

おお。なるほど。知りませんでした(^^;)
勉強になりました。ありがとうございます。

では、merlionXX 様、蛇足かもしれませんが、

Sub Sample()

  Dim rngOrg As Range
  '元データ
  Set rngOrg = ActiveCell 'Cells(3, 3)
  '書込み先セル
  With Cells(1, 1)
    .NumberFormat = rngOrg.NumberFormat
    If Len(rngOrg.PrefixCharacter) > 0 Then
      '接頭文字あり(Prefixを追加して転記)
      .Value = "'" & rngOrg.Value
    Else
      '接頭文字なし(そのまま転記)
      .Value = rngOrg.Value
    End If
  End With

End Sub

こんな風に、PrefixCharacterプロパティで接頭辞の有無を調べ、あれば接頭辞を追加して値を転記するようにすれば、セル書式も生かされますね。

#3 maruru さま

>文字列を表す接頭文字「'」は、PrefixCharacterプロパティで参照出来ます。
>(参照だけで、設定は出来ません。)

おお。なるほど。知りませんでした(^^;)
勉強になりました。ありがとうございます。

では、merlionXX 様、蛇足かもしれませんが、

Sub Sample()

  Dim rngOrg As Range
  '元データ
  Set rngOrg = ActiveCell 'Cells(3, 3)
  '書込み先セル
  With Cells(1, 1)
    .NumberFormat = rngOrg.NumberFormat
    If Len(rngOrg.PrefixChar...続きを読む

QエクセルVBA 別シートの複数のセルの値をコピーする方法

いつもお世話になります。

Dim sh1, sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")

sh1.Range("C6").Value = sh2.Range("F5").Value
として、1つのセルの値ならコピーできるのですが、
sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value
としても、セルの値を持ってくることができません。
どのように書けば良いのでしょうか?

ちなみに今は、
sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
としているのですが、上記だとセルを範囲指定してしまって作業が見えるのでカッコ悪いのです。

Aベストアンサー

7-samuraiの質問ですみません。
No5のimogasiさん、いつもお世話様です。

Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet2")
Set sh2 = Worksheets("sheet1")
sh1.Range("c1:c5").Value = sh2.Range("A1:A5").Value
End Sub

で、うまくいきますよ。
複数セルの場合Valueは省略できないようです。

QExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

Aベストアンサー

#2さんと似たものですが・・・・参考にしてください。

Sub test001()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 2) = Cells(i, 1)
i = i + 1
Loop
End Sub

Qexcel vba データ転記

こんばんは。
excel vbaで教えてください。
シートA、シートB、シートC・・・のB列とM列の最終行に値が入っています。
各シートに最終行から上に3行、5行、6行とバラバラです(最終行から数えて空白行下の行まで)
この各シートの3行や5行のB列とM列の値を”集計シート”にA列にシート名、B列に各シートのB列、C列にM列の値を順に転記したいのです。
最終行だけなら転記できるのですが、各シートの最終行から上のデータを転記する方法がわかりません。ご教示よろしくお願い致します。(わかりづらい文章で申し訳ありません)

Aベストアンサー

以下の数パターンで動くものはありますか

最終行等は、B列基準で考えたものになりますが


Public Sub Samp1()
  Dim ws As Worksheet
  Dim rng As Range
  Dim i As Long, j As Long

  Application.ScreenUpdating = False
  With Worksheets("集計シート")
    .Cells.Delete
    i = 1
    For Each ws In Worksheets
      If (ws.Name <> .Name) Then
        With ws.Columns("B").SpecialCells(xlCellTypeConstants).Areas
          Set rng = .Item(.Count).Cells
          j = rng.Count
        End With
        With .Cells(i, "A").Resize(j)
          .Value = ws.Name
          Intersect(rng.EntireRow, ws.Range("B:B,M:M")) _
            .Copy .Offset(, 1)
        End With
        i = i + j
      End If
    Next
  End With
  Application.ScreenUpdating = True
End Sub

Public Sub Samp2()
  Dim ws As Worksheet
  Dim rng As Range
  Dim i As Long, j As Long, k As Long

  Application.ScreenUpdating = False
  k = Range("M1").Column - Range("B1").Column
  With Worksheets("集計シート")
    .Cells.Delete
    i = 1
    For Each ws In Worksheets
      If (ws.Name <> .Name) Then
        With ws.Columns("B").SpecialCells(xlCellTypeConstants).Areas
          Set rng = .Item(.Count).Cells
          j = rng.Count
        End With
        With .Cells(i, "A").Resize(j)
          .Value = ws.Name
          .Offset(, 1).Value = rng.Value
          .Offset(, 2).Value = rng.Offset(, k).Value
        End With
        i = i + j
      End If
    Next
  End With
  Application.ScreenUpdating = True
End Sub

Public Sub Samp3()
  Dim ws As Worksheet
  Dim rng As Range
  Dim i As Long, j As Long, k As Long

  Application.ScreenUpdating = False
  k = Range("M1").Column - Range("B1").Column
  With Worksheets("集計シート")
    .Cells.Delete
    i = 1
    For Each ws In Worksheets
      If (ws.Name <> .Name) Then
        Set rng = ws.Cells(Rows.Count, "B").End(xlUp)
        If (rng.Value <> "") Then
          j = rng.Row
          If (j > 1) Then
            If (rng.Offset(-1).Value <> "") Then
              Set rng = rng.End(xlUp)
            End If
          End If
          j = j - rng.Row + 1
          Set rng = rng.Resize(j)
          With .Cells(i, "A").Resize(j)
            .Value = ws.Name
            .Offset(, 1).Value = rng.Value
            .Offset(, 2).Value = rng.Offset(, k).Value
          End With
          i = i + j
        End If
      End If
    Next
  End With
  Application.ScreenUpdating = True
End Sub

以下の数パターンで動くものはありますか

最終行等は、B列基準で考えたものになりますが


Public Sub Samp1()
  Dim ws As Worksheet
  Dim rng As Range
  Dim i As Long, j As Long

  Application.ScreenUpdating = False
  With Worksheets("集計シート")
    .Cells.Delete
    i = 1
    For Each ws In Worksheets
      If (ws.Name <> .Name) Then
        With ws.Columns("B").SpecialCells(xlCellTypeConstants).Areas
          Set rng = .Item(.C...続きを読む

Q繰り返し1行~28行までを順順にコピーする方法

(B1:B28)を選択しD2に貼り付け(値・行列入れ替え)
(B29:B56)を選択しD3に貼り付け(値・行列入れ替え)
(B57:B84)を選択しD4に貼り付け(値・行列入れ替え)
:
:
:

といった感じに28個セルを選択し順順に貼り付けていく作業を行っているのですが330回くらい繰り返すのであまりに大変なのでマクロを作成しました。やはり途中で操作ミスなどありましたがなんとか記録できました。

しかしこれはVBAで作成すればもっとスマートにできるかな?と思い質問させて頂きます。
どなたかわかる方いれば宜しくお願いします。

Aベストアンサー

こんな感じ?

Sub Transpose28()

Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 330
Cells(i * 28 - 27, 2).Resize(28).Select
Selection.Copy
Cells(i + 1, 4).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

QエクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?

ワークシート関数で書けば
=IF(OR(F18=0,AND(F15>0,F16>0)),TRUE)です。
これをVBAで書こうとして

If Sheet1.Range("F18") = 0 Or Sheet1.Range("F15") > 0 And Sheet1.Range("F16") > 0 Then
MsgBox True
Else
MsgBox False
End If

とやってみたのですが、正しくないようです。
どのように書けばいいのでしょうか?

Aベストアンサー

>とやってみたのですが、正しくないようです。

式は正しいと思いますよ

ANDとORは、ANDが先に演算されます。/*と+-では、/*が先に演算されるようなものです。

でも、わかり易くするために、#1のかたのように括弧をつけるほうが良いですね。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む


人気Q&Aランキング