- 締切済み
excel2000マクロ操作
(1)枚目の表 E列 F列 コード S570SEM SEMEDS 時数 7.5 3 (2)枚目の表 UHRSEM SEMEDS S570SEM 3 7.5 (1)枚目の表の時数のデータを(2)枚目の同じコードの列に時数を挿入する方法を 教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
やはり下にまだあったんですね。想像しきれませんでした。 4行、追加、変更します。 Public Sub Syukei() Dim wsDat As Worksheet Dim wsIns As Worksheet Set wsDat = Worksheets("Sheet1") Set wsIns = Worksheets("Sheet2") Dim col1 As Integer, col2 As Integer Dim rw As Long '*** 追加 *** With wsIns For col2 = 1 To .Range("A1").End(xlToRight).Column For col1 = wsDat.Range("E1").Column To wsDat.Range("F1").Column If .Cells(1, col2) = wsDat.Cells(1, col1) Then For rw = 2 To wsDat.Cells(65536, col1).End(xlUp).Row '*** 追加 *** .Cells(rw, col2) = wsDat.Cells(rw, col1) '*** 変更 *** Next '*** 追加 *** End If Next Next End With End Sub
- nishi6
- ベストアンサー率67% (869/1280)
想像して書いてみました。 Sheet1のデータをSheet2に挿入します。 Sheet2のUHRSEMがA1セルにあるとします。 標準モジュールに貼り付けます。ご参考に。 Public Sub Syukei() Dim wsDat As Worksheet '1枚目の表あるシート Dim wsIns As Worksheet '2枚目の表あるシート Set wsDat = Worksheets("Sheet1") Set wsIns = Worksheets("Sheet2") Dim col1 As Integer, col2 As Integer '列カウンタ With wsIns 'コードを調べる For col2 = 1 To .Range("A1").End(xlToRight).Column For col1 = wsDat.Range("E1").Column To wsDat.Range("F1").Column If .Cells(1, col2) = wsDat.Cells(1, col1) Then .Cells(2, col2) = wsDat.Cells(2, col1) End If Next Next End With End Sub
補足
回答ありがとうございました。また質問ですが Sheet1の2行目のデータは、Sheet2に挿入できたのですが、例えば3行目から50行目に入っているデータ はどうやって挿入できるのですか。教えてください。 お忙しい所申し訳ありません。
- nishi6
- ベストアンサー率67% (869/1280)
マクロで挿入するのですか? 項目内容が変化する場合は、マクロなしでも算式で、SEMEDSがSheet2のB1にあるとして、B2セルに =IF(ISERROR(HLOOKUP(B1,Sheet1!$E$1:$F$2,2,FALSE)),"",HLOOKUP(B1,Sheet1!$E$1:$F$2,2,FALSE)) をセットすれば出ますが・・・(1枚目の表はSheet1にあるとしています。) $E$1:$F$2は実際の範囲に変えて下さい。右左にコピーできます。Sheet1の範囲を照合して値を表示しています。挿入ではなく、あらかじめ式を登録しておきます、こういう意味? マクロで行なうには、2枚目の表の項目名と1枚目の項目名を比較して、一致したら値を書きこむことになります。 質問があいまいでコードは書きづらいですね。
補足
マクロで挿入したいと思います。下記のモジュールを修正すれば出来ると思いますが よろしくお願いします。 Public Sub Syukei() Dim wsDat As Worksheet '1枚目の表あるシート Dim wsIns As Worksheet '2枚目の表あるシート Set wsDat = Worksheets("Sheet1") Set wsIns = Worksheets("Sheet2") Dim col1 As Integer, col2 As Integer '列カウンタ With wsIns 'コードを調べる For col2 = 1 To .Range("A1").End(xlToRight).Column For col1 = wsDat.Range("E1").Column To wsDat.Range("F1").Column If .Cells(1, col2) = wsDat.Cells(1, col1) Then .Cells(2, col2) = wsDat.Cells(2, col1) End If Next Next End With End Sub
- urk
- ベストアンサー率33% (18/53)
単に数式の =sheet1!E3 ではだめですか?
お礼
出来ました。わかりやすい回答本当にありがとうございました。 今後は質問をわかりやすくしたいとおもいますので、 またわからない所がありましたらよろしくお願いします。