- ベストアンサー
EXCELで入力されているデータを表示させたい
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
コントロールをおしながら複数選択したシートについて 各シートの A1セルに対して ctlr+sift+end で選択できる範囲を ※A列のデータが不足しているとずれる・・ 新しいシートに結合します。 マクロ> VisualBasicEditor起動 >挿入>標準モジュール ↓以下貼り付け ↓ Sub 選択シートのA1を基準に使用範囲を新しいシートへ結合コピー() Dim 置き場所 As Range If ActiveWindow.SelectedSheets.Count = 1 Then MsgBox "シートの複数選択は コントロールを押しながら選択" Exit Sub End If For Each 選択シート In ActiveWindow.SelectedSheets 選択シートリスト = 選択シートリスト + "/" + 選択シート.Name Next Sheets(1).Select Sheets.Add before:=Sheets(1) Set 置き場所 = Sheets(1).Range("A1") For Each 選択シート名 In Split(Mid(選択シートリスト, 2), "/") If 0 < Sheets(選択シート名).Range("A1").CurrentRegion.Count Then Sheets(選択シート名).Range("A1").CurrentRegion.Copy _ Destination:=置き場所 Set 置き場所 = Sheets(1).Range("A65536").End(xlUp).Offset(1) End If Next Sheets(1).Name = Mid(Replace(選択シートリスト, "/", "と"), 2) End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17068)
例データ A2:B8 第1行目は行挿入して、特にC1は空白にします A列 B列 a d b c c f d h e k f g k とします。 (1)これをたとえばA列に1列に寄せ集めることが許されるケースなら、 =IF(COUNTA(A:A)<ROW()-1,INDIRECT("B"&ROW()-COUNTA(A:A)),A2) をどこかの列に複写するとA列のデータの後にB列のデータが続く。 その場合は初出だけに連続番号をふるのは、簡単で =IF(COUNTIF($A$2:$A$100,A2)=1,MAX($G1:G1)+1,"") を複写することにより出せる。 (2)1列化をやってはいけないケースなら 初出に連番を振るのは たとえばC2に=IF(COUNTIF($A$2:$A$8,A2)+COUNTIF($B$2:$B$5,A2)=1,MAX($C$1:C1)+1,"")と入れて複写する。 D2に=IF(COUNTIF($A$2:$A$8,B2)+COUNTIF($B$2:$B$8,B2)=1,MAX($D$1:D1)+1,"")を入れて複写する。 D1には=MAX(C:C)を入れておく(上の例の場合4) これで初出に連番が振れた。 (2)連番に基づき、別列にA列に寄せ集まったデータから寄せ集めるのは 私の回答で何度も書いている。今回略。 (3) 2列のままの場合は、2つに分かれて処理せざるを得ず、関数式が複雑になる。 そういうことで、関数では複雑になるので、VBAなどでやったほうがよいと思う。
- imogasi
- ベストアンサー率27% (4737/17068)
この質問で意味がわかるのでしょうか。 >シート1のA列1~10行にA~J、 1から10行までの各セルにAからjまでのどれか1文字が入っているのでしょうか。 複数の文字の連なりが1セルに入っているのですか。 >シート2のA列1~10行にC~Lと入力されています。 これも1から10行までの各セルに、Cからjまでのどれか1文字が入っているのでしょうか。Cからとなぜ前者と違うのでしょうか。 >シート3のA列1~12行にA~Lを表示させるのにはどのような Sheet1のA-Jを元にSheet2のC-Jと対応をとって、第3のデータ(質問になし)を引っ張ってくるのでしょうか。 本当に統合で解決する問題ですか。 答えておられる方がいらっしゃるので、私の頭が悪いのかな。
補足
説明不足ですみません m(_ _)m。 シート1のA1にA、A2にB・・A10にJ。 シート2のA1にC、A2にD・・A10にL。 というように入力されています。 シート1とシート2を比較するとC~Jはダブって入力されています。 このダブリを解消してシート3のA1にA、A2にB、A3にC、A4にD・・A10にJ、A11にK、A12にLと表示させたいと言うことです。 これで見てくれた方に理解していただけるとイイのですが・・・。 これでもイマイチでしたらまたご連絡をお願いいたします。 ちなみに(imogasi)さんの回答はいつも、それこそ参考にさせていただいています。「頭が悪い」と思っている人はなかなかいらっしゃらないと思いますヨ。
- Wendy02
- ベストアンサー率57% (3570/6232)
#1 のWendy02 です。 >参考とさせていただきます。 うーむ。「参考」とするということは、つまり期待していたものと違うということですか?どういうものをお望みなのかは分かりませんし、また、私は、関数でも分かりませんが、もしも、マクロでしたら、#1 を記録マクロにしてもマニュアルでも変わりようがないのです。それ以外のマクロでしたら、こんなふうなものもできます。 Sub myConsolidation() Dim i As Long, c As Range Dim myData As String, myArray As Variant For i = 1 To 2 With Worksheets("Sheet" & i) '最初のセルをA1とする。 For Each c In .Range("A1", .Range("A65536").End(xlUp)) If InStr(myData, "," & c.Value) = 0 Then myData = myData & "," & c.Value End If Next c End With Next i myArray = Split(Mid$(myData, 2), ",") Worksheets("Sheet3").Range("A1").Resize(UBound(myArray) + 1) = _ Application.Transpose(myArray)
お礼
度々のご回答ありがとうございます。 「参考とさせていただきます」はまだ回答が一つしかなかったので、まだ色々なやり方を回答してくれる方がいらっしゃるだろうと思って書きました。 私の知識不足で回答は、関数やVBAでの回答が来るだろうと思っていましたが、EXCELの機能で処理を行うと言う回答は想像していなかったのも事実ですネ。 こんなやり方もあるのかと感心しています。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 シート1か、シート2のどちらかのB列をひとつ使えませんでしょうか? どれかひとつのデータのあるA列の隣のB列のセルに、[0] とでも入れておきます。数字なら何でもよいです。 シート3をオープンして、A1にカーソルを合わせたら、 [データ]-[統合]で、[統合の設定] で [統合元範囲]を、Sheet1!$A$1:$B$10 →追加 Sheet2!$A$1:$B$10 →追加 で、 統合の基準を [左端列]にチェックを入れます。 そして、OKを押せば統合されます。 シート3のA列1~12行にA~Lと表示されます。 不必要な0は削除してかまいません。
お礼
早速のご回答ありがとうございます m(_ _)m。 「統合」の機能は使ったことがありませんでした。参考とさせていただきます。
関連するQ&A
- 表のデータからある範囲の集計をしたい
1)Excel2007&windows7を使いマクロ作成中の初心者です。 2)シートに毎月データを追加入力し、年で締め切る表を作成しています。 3)表はF列からL列まで、6行目から580行(毎月変動)ぐらいの表です。 4)H列には、A部門、B部門、C部門のいずれかの文字列が入ります。 5)J列には、平成27年1月から12月までの年月が入ります。 6)K列、L列には数値が入力されます。 以上が、毎月作成する表の概要です。 そして、やりたいことは、この表に基づいて、例として、27年1月の表示される行の中の A部門のK列の合計、B部門のK列の合計、C部門のK列の合計を知りたいことと、 A部門のL列の合計、B部門のL列の合計、C部門のL列の合計を知りたいです。 この、合計の結果を、他のシートに表示したいです。 Excel関数でもExcel VBAでも、やりたいこと出来れば、どちらでもいいです。 =SUMIF(C17:C29,"A部門",F17:F29) 同一シート内で上の関数を、利用できますが、これに27年1月だけで集計したいです。 また、他のシートの中に表示したいです。どうしたらよろしいか教えてください。
- ベストアンサー
- Visual Basic
- エクセル 関数を使わずにデータを取りたい
EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。
- 締切済み
- Visual Basic
- エクセルで、等間隔ごとのデータを表示させるいい方法はありませんか?
エクセルで、等間隔ごとのデータを表示させるいい方法はありませんか? エクセルシートに、A1に1月1日、A2に1月2日というように日にちが並んでいます。データは一年分です。 Cの列に、A列のデータを、一つ飛ばしで表示させようとしています。C1には1月1日、C2には1月3日、C3には1月5日となるようにしたいのです。 現状は関数で、C1には、IF(A1="","",A1)の関数をいれ、C2には IF(A1="","",A3)、 C3には IF(A1="","",A5)というように、C列の行が増えるたびにA列の行を2つずつ増やすように直接入力しています。 件数が多くなった場合入力がたいへんなので、上記とは違った方法で、楽に表示できるようにしたいのですが、どのような式にしたらよいか分かりません。どうかお知恵をお貸しください。よろしくおねがいしますm(_ _)m
- ベストアンサー
- その他MS Office製品
- エクセル関数の自動表示について
自動表示についてご質問いたします。 シート1 (3月入力時) A列 B列 C列 D列 E列 F列 G列 H列 1行目 1月 2 10 11 12 30 31 33 2行目 2月 1 2 5 8 9 10 48 3行目 3月 3 5 10 11 30 31 32 4行目 4月 こういうシート1の表があったとします。 シート1で3月入力した時点で、シート2では以下の表があったとします。 A列 B列 C列 D列 E列 F列 G列 1行目 3 5 10 11 30 31 32 と、自動で表示され。 4月(シート1)に数値を入力すれば、シート2の数値が最新数値に自動で入れ替わる・・・と、いう関数を作りたいのですが、いい関数ありますでしょうか? この場合、シート1ではB列~H列の数字の個数は固定(今回は7個)であり、毎回ランダムで数字が入力されていきます。 これをシート2の1行目、A列~G列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;
- ベストアンサー
- オフィス系ソフト
- 【Excel】一致するデータの検索
Excel2003を使用しています。 Sheet1のB列の値がSheet2のA列に入力されている値と一致したら、Sheet1のC列とD列の値をSheet2のC列とD列に表示させたく、VLOOKUP関数を使用したところ、Sheet1のB列とSheet2のA列のデータの並び方(順序)が同じではないためか、VLOOKUP関数ではできませんでした。 こういう場合、マクロで処理することは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? Sheet1のデータは4行目から、Sheet2のデータは6行目から入力されています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル 関数を自動的に入力するVBAで困っています
VBA初心者です。 エクセルの入力シートで行ごとにデータを下記のように入力しています。 A B C 1 日付 品番 商品 2 10/25 10 りんご 3 10/26 20 みかん 4 5 6 2行目から順にデータを入力すると自動的にC列にVBAで VLOOKUP関数をセットして商品を検索したいのですが 上手くできませんでした。 教えてください。よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- VBA,二つのExcelのsheetにデータ保存
VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3 , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- マーク入力セルがある行は非表示
Excelシート1~10行のうち1.3.7.9行のD列にIF関数により"●"が入力されています。 "●"の1.3.7.9行をVBAコード入力で非表示にならないでしょうか。解る方、宜しくお願いたします。
- ベストアンサー
- Visual Basic
- エクセルの空白を詰めて別シートに表示
sheet1のデータを参照して、空白を詰めてsheet2へ表示させたいんです! sheet1(元データになるもの) A列 |B列|C列・・・ 1行目A|100|100 2行目B| |200 3行目C|100| 4行目D| |200 5行目E|100| 6行目F| |100 ・ ・ sheet2(sheet1でB列に入力があるものを抽出) A列 |B列 1行目A|100 2行目C|100 3行目E|100 sheet3(sheet1でC列に入力があるものを抽出) A列 |B列 1行目A|100 2行目B|200 3行目D|200 4行目F|100 sheet2のA1に下記の式を入力してA列とB列に数式をコピー =IF(COUNT(Sheet1!$B$1:$B$6)<ROW(A1),"",INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$1:$B$6<>"",ROW($A$1:$A$6)),ROW(A1)))) すると下記のように表示されます。 A1=A B1=100 A2=#NUM! B2=#NUM! A3=#NUM! B3=#NUM! 4行目から空白 sheet2のA2のところにエラーが出ていますが、「関数の引数」のところで「数式の結果」には「100」と 正解が表示されています。(B2、A3、B3も同様に)数式の結果のところには正解が表示されています。 答えの「#NUM!」のところに正解を表示させるには、どうしたらいいですか? 見よう見まねでつくったのもで。。。関数にあまり詳しくありません。 よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
- ExcelのVBAにてキーになるものを入力してデータを振分けたい
2つのシートがあり、sheet2に振分けるデータ(下表)を作成しておきます。 (列) 1 2 3 (行) 1 A B C 2 ○ △ × 3 ア イ ウ (1)sheet1にコンボボックスにてAを入力する。A、B、Cは、それぞれ決められたセルにコピーされる。 (2)sheet1にコンボボックスにて○を入力する。○、△、×は、それぞれ決められたセルにコピーされる。 (1)と(2)のコピーされる場所は、同じ場所です。 というようなものをExcelのVBAにて作成したいのですが、VBAは、あまりよくわかりません。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
お礼の連絡が遅れて申し訳ありませんでした。 いつもながら皆さんのご親切な回答には驚かされます。 動作の確認を楽しみに行なわさせていただきます。