[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『結果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
'別のシート=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は Aのデータ
シート2は Bのデータで 種類が違います。
シート2の データを シート3で Aのデータと同じ項目に並び替えます。
シート3のデータを シート1に入っているデータの一番下の次から 貼り付けたいです。
シート3から シート1の一番下に
手動でコピーしてもできますが 手間を省くために と思いました。
すみません 最初の説明に誤りがありました。
(MOJO) 2020/02/17(月) 18:41
(jk) 2020/02/17(月) 18:42
行列がはっきりしないので
例)シート2を作成してコピーしたものをここに添付してみてはどうでしょうか。
(MAP) 2020/02/17(月) 20:23
(有志の方の修正お待ちしております。勉強させていただけると幸いです)
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
シート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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.