Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11731 / 13644 ツリー ←次へ | 前へ→

【14466】sheet1にデータがあればSheet2に違う値を挿入 バカボン 04/5/30(日) 13:02 質問[未読]
【14469】Re:sheet1にデータがあればSheet2に違う値... ちゃっぴ 04/5/30(日) 15:32 回答[未読]
【14471】Re:sheet1にデータがあればSheet2に違う値... ichinose 04/5/30(日) 15:53 回答[未読]
【14472】Re:sheet1にデータがあればSheet2に違う値... バカボン 04/5/30(日) 16:06 お礼[未読]

【14466】sheet1にデータがあればSheet2に違う値を...
質問  バカボン E-MAIL  - 04/5/30(日) 13:02 -

引用なし
パスワード
   Sheet1,Sheet2があるとして
現在
<Sheet1>
A   B  C    D    E    F   G ・・・・
PASS NO 項目1 項目2 項目3 項目4 項目5 ・・・・
abc  1  ×            ○×  
ded  5  ×        △       
※PASS=半角英数字 番号=連番ではない 項目1〜10まであり、データはない部分もあり,すべて文字列データ

ここでやりたいことがSheet1にて、項目1〜10にてセルにデータがあれば
Sheet2に同じ座標のセルに下記のようなデータを以下のように転記したいのです。

<Sheet2>
A   B C          D    E    F       G 
PASS NO 項目1       項目2 項目3  項目4     項目5
abc  1 ./id.cgi?cm?tx1?num=1        ./id.cgi?cm?tx4?num=1  
ded  5 ./id.cgi?cm?tx1?num=5   ./id.cgi?cm?tx3?num=5 

./id.cgi?cm?tx1?num=1   ←挿入したいデータ
        ↑   ↑
      列番号  NO  
のようにSheet1にあるセルにデータがあれば、Sheet2の該当する同じ座標のセルに
『./id.cgi?cm=・・・・・』 というデータを上記にある規則に従って
挿入するようにしたいのですが、可能でしょうか?可能であれば、実際にどのような方法をすればよろしいでしょうか?ご教授お願いします

【14469】Re:sheet1にデータがあればSheet2に違う...
回答  ちゃっぴ  - 04/5/30(日) 15:32 -

引用なし
パスワード
   >Sheet2に同じ座標のセルに下記のようなデータを以下のように転記したいのです。

同じ座標にということですので、Range(Cells)がキーになると考えてよろしいですね?

ということは、まずSheet1の各項目範囲をループして、値が存在した場合、ソンデータを転記するという流れになります。

つまり、フローにするとこのような感じになります。

Sheet1の各項目範囲をループ(For、Do文)・・・1
     ↓
値の存在判定(If文を使用)
     ↓
存在した場合(値の転写)
     ↓
   1に戻る

こんな感じです。

ちなみにシート間の値の転写はこのようにあらわされます。
WorkSheets("Sheet1").Range("A1").Value _
     = WorkSheets("Sheet2").Range("A1").Value

ちょっと考えて見てください。

【14471】Re:sheet1にデータがあればSheet2に違う...
回答  ichinose  - 04/5/30(日) 15:53 -

引用なし
パスワード
   こんにちは。
>Sheet1,Sheet2があるとして
>現在
><Sheet1>
>A   B  C    D    E    F   G ・・・・
>PASS NO 項目1 項目2 項目3 項目4 項目5 ・・・・
>abc  1  ×            ○×  
>ded  5  ×        △       
>※PASS=半角英数字 番号=連番ではない 項目1〜10まであり、データはない部分もあり,すべて文字列データ
>
>ここでやりたいことがSheet1にて、項目1〜10にてセルにデータがあれば
>Sheet2に同じ座標のセルに下記のようなデータを以下のように転記したいのです。
>
><Sheet2>
>A   B C          D    E    F       G 
>PASS NO 項目1       項目2 項目3  項目4     項目5
>abc  1 ./id.cgi?cm?tx1?num=1        ./id.cgi?cm?tx4?num=1  
>ded  5 ./id.cgi?cm?tx1?num=5   ./id.cgi?cm?tx3?num=5 
>
> ./id.cgi?cm?tx1?num=1   ←挿入したいデータ
>        ↑   ↑
>      列番号  NO  
>のようにSheet1にあるセルにデータがあれば、Sheet2の該当する同じ座標のセルに
>『./id.cgi?cm=・・・・・』 というデータを上記にある規則に従って
>挿入するようにしたいのですが、可能でしょうか?可能であれば、実際にどのような方法をすればよろしいでしょうか?ご教授お願いします
一箇所、不明な点がありましたが(Sheet1の項目1〜項目10が全て未入力だったデータも項目空白として転記するか否か? 、今回は転記しました)、

私は、こういう事例の場合は、関数を使うことが多いんですが・・・。
Sheet2には、1行目の各見出しだけコピーしておいて下さい。

'=================================================================
Sub test()
  Dim rng As Range
  With Worksheets("sheet1")
   Set rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
   End With
  If rng.Row > 1 Then
   With Worksheets("sheet2")
     .Range(rng.Resize(, 2).Address).Value = _
         rng.Resize(, 2).Value
     With .Range(rng.Offset(0, 2).Resize(, 10).Address)
      .Formula = _
         "=if(sheet1!c2<>"""",""./id.cgi?cm?tx""&column()-2&""?num=""&$b2,"""")"
      .Value = .Value
      End With
     End With
   End If
End Sub

確認してみて下さい

【14472】Re:sheet1にデータがあればSheet2に違う...
お礼  バカボン E-MAIL  - 04/5/30(日) 16:06 -

引用なし
パスワード
   ichinoseさん さっそくレスありがとうございます。
おかげで大変助かりました。
あまりにもデータが多く、データが点在してるため
最初は手作業で行っていました。
これで作業スピードもアップできそうです。

初心者でわからないことなど多いかと思いますが
今後ともよろしくお願いします。

11731 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free