[[20200217165902]] 『結果0の場合 空白にする』(MOJO) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『結果0の場合 空白にする』(MOJO)

エクセルで 2つのシートがあります。
1つは 元データを貼る専用で その時によって件数が違います。

例)シート1

A B 名前 果物 コード 品名 数

        りんご	A RI-1	1
	りんご	A RI-1	1
	りんご	A R-2	1
	りんご	A R-2	1
	バナナ	B H-6	1
	バナナ	C S-11	1

例)シート2
1つ目のシートと 項目名の場所は違いますが イコールの計算式を事前にセットしています

A B 報告 名前 果物 範囲 コード 品名 数

		りんご	  A	RI-1	1
		りんご	  A	RI-1	1
		りんご	  A	R-2	1
		りんご	  A	R-2	1
		バナナ    A	H-6	1
		バナナ	  C	S-11	1
		0	  0	0	0
		0	  0	0	0

(報告と 範囲 の項目は 1つ目のシートにありません)

ここで、1つ目のシートは毎回件数が違うので データがない部分は
シート2では 0「ゼロ」表示になります。 

やりたいことは
2つ目のシートの A2セルから データが入っている行までコピーして
他のシートに貼り付けしたいのですが、
A2セルから CTRL+↓ボタンでは 
当然 エクセルの一番果てまで いってしまいます。

上記のシート2の例から言うと 
A2〜A7セルを 別のシートに貼り付けするには 
どのようにしたらよいでしょうか。
(欲を言えば、A2〜A7セルをコピーして、
 別のシートのセルの一番下から 下に貼り付ける。
 別のシートと シート2の 項目の並びは同じです)

宜しくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 いやだから、一番下までデータがあるって事はほぼ無いだろうし、
 一番下だったらデータが入っているかどうかと考えれば良いんじゃないですかね。
 レイアウトの状態がどうなっているのか解らないけど、A2からでなくA1から、
 CTRL+↓を押せば良いんじゃないですかね。
 これも判定が必要になるとは思いますけど。
(BJ) 2020/02/17(月) 17:41

A1 は 確実にセルは空白なので A1から ↓を押すと 一番下まで行ってしまうのです。
(MOJO) 2020/02/17(月) 17:45

Sub main()
    '別のシート=Sheet3に貼り付け
    Dim r As Range, c As Range
    Set r = Sheets("Sheet2").Range("A1")
    For Each c In Sheets("Sheet2").Range("A:A")
        If Sheets(Mid(Split(c.Formula, "!")(0), 2)).Range(Split(c.Formula, "!")(1)).Value = "" Then Exit For
        Set r = Union(r, c)
    Next c
    Sheets("Sheet3").Cells.ClearContents
    r.EntireRow.Copy Sheets("Sheet3").Range("A1")
End Sub

(mm) 2020/02/17(月) 18:00


 シート1から、コピーした方が良いのでは。
 シート2には、シート1を参照する数式が入っているんですよね。
 =シート1!A2 とかの・・・?
 シート1の内容が変われば、シート2の内容も変わりますよね。
 なんでシート2からのコピー?
 なにがどうなっているのか、だんだん解らなくなってきました。
(BJ) 2020/02/17(月) 18:28

すみません
シート1 と 2 と 3があります。

シート1は Aのデータ
シート2は Bのデータで 種類が違います。
シート2の データを シート3で Aのデータと同じ項目に並び替えます。
シート3のデータを シート1に入っているデータの一番下の次から 貼り付けたいです。

シート3から シート1の一番下に 
手動でコピーしてもできますが 手間を省くために と思いました。
すみません 最初の説明に誤りがありました。

(MOJO) 2020/02/17(月) 18:41


首記の件と質問内容が違うけど?

(jk) 2020/02/17(月) 18:42


>A1 は 確実にセルは空白なので A1から ↓を押すと 一番下まで行ってしまうのです。

行列がはっきりしないので
例)シート2を作成してコピーしたものをここに添付してみてはどうでしょうか。
(MAP) 2020/02/17(月) 20:23


手元にExcelがないので正常に動作するわかりませんし
全然VBA初心者の雑コードで申し訳ありませんが
やりたいことはこんな感じでしょうか。

(有志の方の修正お待ちしております。勉強させていただけると幸いです)

Type 商品Info
 果物 as string

  コード as string
 品名   as string
 数     as long
end type

Sub Main()

  Dim Sh1_MaxRow as long '最終行取得
  Dim Sh3_MaxRow as long 
  Dim iCount   as long 'ループ用
  Dim ArrCount  as long '配列出力用
  Dim Item()   as 商品Info
  Dim getCol   as long 
 
  With Sheet3
    '1行目から果物が入ってる列の列番号を取得
    getCol = Row(1).Find("果物").column
   '果物列の最終行を取得
    Sh3_MaxRow = Cells(Rows.Count,getCol).End(xlUp).Row

    Redim Preserve Item(Sh3_MaxRow - 1)
    For iCount = 0 To Sh3_MaxRow - 1
      Item(iCount).果物 = .Cells(iCount + 1,getCol).value
    '果物列から右に1列ずつデータが入ってると想定
   '(違ったら列番号固定で持つかFindで取得して変数に格納したらいいと思います)
      Item(iCount).コード = .Cells(iCount +1 , getCol + 2).value        
   Item(iCount).品名   = .Cells(iCount +1 , getCol + 3).value
   Item(iCount).数     = .Cells(iCount +1 , getCol + 4).value
    Next iCount
 End With

  With Sheet1
    .Activate
    getCol = Row(1).Find("果物").column
    Sht1_MaxRow = Cells(Rows.Count,getCol).End(xlUp).Row
    For iCount = Sht1_MaxRow To Sht1_MaxRow + MaxRow -1
      .Cells(iCount , getCol) = Item(ArrCount).果物
      'こちらも違ったら列番号固定で持つかFindで取得して変数に格納したらいいと思います
      .Cells(iCount , getCol + 1) = Item(ArrCount).コード
      .Cells(iCount , getCol + 2) = Item(ArrCount).品名
      .Cells(iCount , getCol + 3) = Item(ArrCount).数
      ArrCount = ArrCount + 1
    Next iCount  
 End With
End sub
(VBA勉強中9ヵ月目) 2020/02/18(火) 00:34

フィルターオプションで0以外を抽出してはいかが?
(まっつわん) 2020/02/18(火) 08:15

再度 シートの ご説明します。

シート1が基本です。

シート1
A B 名前 果物  範囲 コード 品名 数

	りんご		A	RI-1	1
	りんご		A	RI-1	1
	りんご		A	R-2	1
	バナナ		B	R-2	1
	バナナ		C	BH-6	1

シート2は シート1と別の情報を 貼り付けます(貼り付けるだけ)
項目の並びが 違っています。

シート2
C D S コード 果物 品名 数 状況

	D	キウイ	PI-1	1	
	E	りんご	RU-1	1	
	F	メロン	Q-1	1	
	A	ブドウ	P-2	1	
	B	みかん	XX2	1	

シート3は シート1と同じ項目の並びです。シート3に
シート2の 内容を =(イコール)で 参照します。

シート3
A B 名前 果物 範囲 コード 品名 数

	 キウイ		D	PI-1	1
	 りんご		E	RU-1	1
	 メロン		F	Q-1	1
	 ブドウ		A	P-2	1
	 みかん		B	XX2	1
         0              0       0      0
         0              0       0      0

やりたいことは、シート3の情報を シート1に入っているデータの下に合算したいです。
シート3のキウイ〜みかん の行を シート1のバナナの下の行から貼り付ける。

そのときシート3は シート2からの=(イコール)を事前にセットしているので
もしデータがないと0と表示になります。
A列、B列は 何も情報がないので 一番上(キウイ)から一番下(みかん)までの
情報を 選択して シート1にコピーする方法(マクロ)を教えていただきたく、
宜しくお願い致します。

(MOJO) 2020/02/18(火) 08:57


回答者に対する態度が悪い。質問諦めろ。

名無しより

() 2020/02/18(火) 15:37



(?) 2020/02/18(火) 15:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.