1日1シートで日報管理をしており、1ヶ月20シート程度になります。その20シートの中から条件の一致したセル内の文字列を集計用の別シートへ順に表示させたいのですが方法をご教授願います。いろいろ調べてはみたのですが別シートへ順に表示する方法がわかりませんでした。
具体的には下記の通りです。「あああ」「いいい」・・・は人の名前、「1ヶ月」「2ヶ月」は次に連絡するまでの期間です。
どうぞよろしくお願いいたします。

(シート1)
 A列   B列 
あああ  1ヶ月
いいい  2ヶ月
ううう  1ヶ月

(シート2)
 A列   B列 
えええ  1ヶ月
おおお  2ヶ月
かかか  1ヶ月

シート1とシート2の中から下記のように集計用シートに順に並べたいのです。

(集計用シート3)
  A列       B列
「1ヶ月の人」  「2ヶ月の人」
あああ      いいい 
ううう      おおお
えええ
かかか

このQ&Aに関連する最新のQ&A

A 回答 (4件)

シート分散された入力データをある条件で統合する事は大変困難で、VBA(マクロ)を組み込む事でしか対処できないと思います。


これが、1シートにデータ集約されていれば、関数やオートフィルタ等の機能で容易に抽出できますので、今後のデータ活用を見据えて構成を検討してみては如何でしょうか。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
関数で何とかなると思ったのですが難しいのですね。
ちなみに、VBAを組み込む場合、相当難しい作業になるでしょうか?
私はVBAに関しては全くの無知で、エクセルに関しては最近、数種類の関数を活用するようになった程度です。
これを機会にVBAを勉強してみようとも思いますが・・・

お礼日時:2009/05/13 10:46

「探す」とか「印を付ける」ということであれば関数で解決できますが


「まとめて別シートに移す」となると難しいですね。

でも ようは「ゴチャ混ぜになってるものをグループ分けする」ってだけですよね?

日ごとのシートにフィルタを設定して、「1ヶ月の人」「2ヶ月の人」とそれぞれ抽出して
「集計用」に まとめてコピペすればいいだけですよね?

まぁマウス操作でも十分対応可能でしょうし、ショートカットを覚えれば何も面倒なことはないように思うのですが。

逆に何が分からないですか?

この回答への補足

ありがとうございます。
各職員の日報管理を行うので、フィルタで抽出する場合だと職員人数分の手間がかかってしまうため、関数などで解決できないかと思った次第です。
フィルタで行えば手間はかかりますが確かに行えますよね。

補足日時:2009/05/13 15:45
    • good
    • 0

NO1です。


他のプログラミング経験があればそれほど難しいものではありませんが、全くとなると厳しいと思います。
例えば、「VBA」をキーワードにサイト検索すれば多くのHPがありますので一度、閲覧してみては如何でしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回は時間が無いので別の方法で対応しますが、これを機に少しVBAを勉強してみようと思います。

お礼日時:2009/05/13 15:51

集計用シートに各シートの表を統合して、そこから処理を行った方が良いでしょう。

統合を行う際、「1ヶ月」の様に文字列データでは統合せきませんので、数値に変換してから行います。
手順は、リンク先をご参照ください。集計の方法は「最小値」が良いでしょう。
そうすれば、↓の様なデータになります。

あああ 1
いいい 2
ううう 1
えええ 1
おおお 2
かかか 1

後はオートフィルター等で……。

http://ascii.jp/elem/000/000/205/205738/index-2. …
    • good
    • 0
この回答へのお礼

ありがとうございます。
取り急ぎ、確認して参考にしてみます。
色々な方法があるのですね。
まだまだ、勉強が足りないようです・・・

お礼日時:2009/05/13 15:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qマクロでシートタブ色の変更

例えば、A1に数字が入ればシートタブが青色に、A1とA2に数字が入ればシートタブが黄色に、
A1とA2とA3に数字が入ればシートタブが赤色に、このようにするにはどのように記述したら良いでしょうか、よろしくお願いいたします。

Aベストアンサー

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1:A3"), Target) Is Nothing Then
Worksheets("Sheet1").Tab.ColorIndex = -4142
If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 3
ElseIf Range("A1") <> "" And Range("A2") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 6
ElseIf Range("A1") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 5
End If
End If
End Sub
これで良いのかな。
ーー
結構、初心者には勉強点があるように思う。
(1)シートイベントというものの勉強
(2)マクロの記録でタブの色を変えるコードを勉強する
また色を抹消するコードを勉強する。
(3)3つの場合の場合分け(条件の多いほうから聞く)
(4)A1:A3以外は素通りさせる方が良いかな(ntersectの利用。これはIFでORを使っても出来る)
数字かどうかのチェックを略している(IsNumericで、使って追加してください)
しかしこの質問のアイデアは珍奇で使えるのかな(今まで質問に出たこと無いような)。
Changeイベントを扱う難しさなどがある。上記コードでは多数例テストして無いので、出来るだけテストして見てください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1:A3"), Target) Is Nothing Then
Worksheets("Sheet1").Tab.ColorIndex = -4142
If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 3
ElseIf Range("A1") <> "" And Range("A2") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 6
ElseIf Range("A1") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 5
End If
End I...続きを読む

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

QofficeXP Excel シートタブの色変更が出来るタイプと出来ないタイプ??? 

自宅も会社もofficeXPなんですが、少し違うところがあります。

エクセルで、自宅のはシートのタブが色変更できます。
シートタブ上で右クリックから色を選べます。

でも、会社のは同じXPなのに、右クリックからこの機能が出てこないのです。
これってバージョンによるものなんですか?

それとも、法人向けはこの色変更の機能を抜き取っているんですか?

どなたかわかるかたいますか?
よろしくお願いします。

Aベストアンサー

こんにちは

バージョンの違いがあるのでは、バージョンは?
検索していると2002からだとか(未確認ですが)
http://www.relief.jp/itnote/archives/002047.php

では。

Qエクセルの関数を教えて下さい。 例 シート3 11月の売上集計 A 列 B列 C列 D列 1行 い

エクセルの関数を教えて下さい。

例 シート3 11月の売上集計
A 列 B列 C列 D列
1行 い ろ は
2行 りんご 3 2 4‥
3行 累計 15 12 13‥
4行 みかん 2 5 6‥
5行 累計 12 14 16‥
と売上の集計が続いています。
この時、2行目と4行目は手入力してます。
B3は=B2+10月シートB3となります。
C3はC2+10月シートC3となります。
5行目も同様です。
このシートをコピーして12月分を作った時、
B3は=B2+10月シートB3の10月を11月に
変更してます。
自動的に変更できる方法はないですか❓

Aベストアンサー

11月の
>シートをコピーして12月分を作った時、
>B3は=B2+10月シートB3の10月を11月に
>変更してます。
>自動的に変更できる方法はないですか❓
…と言う事ですか?
ならば月の数字をいじれば良いだけですので、CELL関数でシート名を取得して、それを加工しましょう。

 =CELL("filename",A1)
これで、このCELL関数が使われたシート名を含んだ文字列を取得できます。
 C:\Users\あさご\Documents\Excel_file\[売り上げとか.xlsx]12月の売上集計
のような値が返ってきますので、ファイル名の後ろにある「 ] 」の位置をFIND関数で見つけて、その次の文字から最後の文字までをシート名としてMID関数などで切り出し、
”月の売上集計”をSUBSTITUTE関数で削除する(空欄に置き換える)か、得られたシート名の先頭から「月」の文字の前の文字までを別途切り出す。
これで月の数字の部分を得ることができます。
あとはこの数字を足したり引いたりしてINDIRECT関数に入れて参照したいシート名にすればよいです。
1月には12月のシートを参照したいという事になるでしょうから、そのあたりも考慮して作りましょう。
(MOD関数を使うと良いかもしれない)

11月の
>シートをコピーして12月分を作った時、
>B3は=B2+10月シートB3の10月を11月に
>変更してます。
>自動的に変更できる方法はないですか❓
…と言う事ですか?
ならば月の数字をいじれば良いだけですので、CELL関数でシート名を取得して、それを加工しましょう。

 =CELL("filename",A1)
これで、このCELL関数が使われたシート名を含んだ文字列を取得できます。
 C:\Users\あさご\Documents\Excel_file\[売り上げとか.xlsx]12月の売上集計
のような値が返ってきますので、ファイル名の後ろ...続きを読む

Q[EXCELマクロ] シートタブに自動で色をつけるには?

シートが、1日~31日まであり、シート内は31枚とも全て同じで、
例えば、セルA1 に、日付(平成19年7月18日と表示)があったとき、
その日付を参照して、土曜日なら青色、日曜日なら赤色、というふうに
自動で31枚全てのタブの色を変更してくれるようにしたいのですが、
可能でしょうか?
また可能であれば、どのようにマクロを組めばいいでしょうか?

Excel2003を使用しています。
よろしくお願い致します。

Aベストアンサー

全シートのセルA1に日付が入っている場合でのサンプル。

Sub test()
  Dim sh As Worksheet
  Dim hi As Integer
For Each sh In Worksheets
  With sh
     Select Case Weekday(.Range("A1").Value, vbMonday)
         Case 6
         .Tab.ColorIndex = 41
         Case 7
         .Tab.ColorIndex = 3
         Case Else
         .Tab.ColorIndex = xlColorIndexNone
     End Select
 End With
Next
End Sub
日付以外が入っている場合は、修正が必要かもしれません。
ご参考程度として下さい。

QエクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1週間に6行要します。データBは月曜から金曜なので1週間に要するのは5行です。従って、単純にこの2つのデータを張り合わせるだけでは(データBをデータAのシートに張り合わせた時)、1週間に要する行数が違うので1行ずつずれてしまいます。

1週間に要する行数の違いだけでなく、マーケットが休みの日はデータそのものがないため日付が存在しません。(マーケットの休みもおのおの別の日でバラバラです。)

これらの理由により、ただ単に張り合わせるだけだとずれが広がるばかりです。

そこでデータAの日付とデータBの日付を認識して一致させる関数を教えて欲しいと思います。

データAの構成はA1=日付、B1=始値、C1=高値、D1=安値、E1=終値で、データBの構成も同じです。
データAのF1にデータAのA1と同じ日付のデータBの行を貼り付るように設定したいと思っています。

説明が分かり辛い場合は補足しますので、その際はご指摘下さい。

宜しくお願いします。

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1...続きを読む

Aベストアンサー

誤記がありましたね。ごめんなさい。

シートCのA2に
2010/1/1
を置いて下向けにえいやっとオートフィルドラッグ,365日の日付を並べておいて
B2:為替
=IF(COUNTIF(為替!$A:$A,$A2),VLOOKUP($A2,為替!$A:$E,COLUMN(B2)),"")
を右に下にコピー。
F2:株式
=IF(COUNTIF(株式!$A:$A,$A2),VLOOKUP($A2,株式!$A:$E,COLUMN(B2)),"")
を右に下にコピー。

これでマーケットの開いてなかった日付がエラーになることもありませんので,追加のご質問も解消でしょうか。

Q該当月のみにシートタブに自動で色

いつもお世話になります。
Win7 Excell2010 てす。

記入 顧客名簿 1 ~ 12  とシートがあります。

1)記入、顧客名簿 のシートには色付けしています。
2)1 ~ 12 は半角文字です。 (1月~12月を意味しています)

例えば、
A1 のセルに 8 と 今月は 8月ですから 8のシートタブに自動的色付けさせたいのですが可能でしょうか。
いろんなサイトで検索しましたが見つけることができませんてした。
VBAの記述と思いますがもし可能ならご指導いただけませんか。

Aベストアンサー

例として。

Dim sh As Worksheet
    For Each sh In Worksheets
        If sh.Name = Month(Now) Then
            sh.Tab.Color = 255    ' 赤
        Else
            sh.Tab.ColorIndex = xlNone
        End If
    Next

これを「開く時」イベントに書いておくと、
おそらくお望みの
・該当月の見出しは「赤」
・それ以外の見出しは「無色」
に出来ます。

VBAの使い方は別途お調べくださいませ。

QA列とB列の重複を抽出したいのですがA列とB列の値は一部だけ同じ文字です。ご教示お願いします。

エクセル初心者です。重複を見つけるのが仕事です。いろいろやってみたのですがうまくできません。
お知恵をお貸しください。

A列には企業名が入力されています。
B列にも企業名が入力されていますが全く同じ文字ではないのです。

たとえばこういうことです。
A1 (有)雪見酒      B1  雪見
A2 株式会社豪雪地帯   B2 (株)豪雪地帯
A3 ゆきかき本舗     B3 (有)ゆきかき本舗

A列にある企業名とB列にある企業名が同じであればセルを塗りつぶすか○を表示させるように
したいのです。
重複を見つけるのが目的なので、ほかの方法でもかまいません。
すみません、A列のセルとB列のセルが全く同じ名前ならば重複が見つけられたのですが
ここから先がどうしてもわからないのです。。。
申し訳ありませんがどうか教えてください。。。

Aベストアンサー

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim nameT1(maxrow1)
ReDim nameT2(maxrow2)
Range("C1:" & "D" & maxrow2).Value = ""
Call makeTable(nameT1, "A", maxrow1)
Call makeTable(nameT2, "B", maxrow2)
For row1 = 1 To maxrow1
For row2 = 1 To maxrow2
If Cells(row2, "C") = "" Then
If Mymatch(nameT1(row1), nameT2(row2)) = True Then
Cells(row2, "C").Value = "○"
Cells(row2, "D").Value = row1
End If
End If
Next
Next
t2 = Time
MsgBox ("チェック完了 処理時間=" & Minute(t2 - t1) & "分" & Second(t2 - t1) & "秒")
End Sub
'余分な文字を削除した結果をテーブルに格納する
Private Sub makeTable(ByRef nameT() As String, ByVal col As String, ByVal maxrow As Long)
Dim row As Long
Dim ary As Variant
Dim name As String
Dim i As Long
ary = Array("㈱", "(株)", "株式", "(有)", "有限", "会社")
For row = 1 To maxrow
name = Cells(row, col).Value
For i = 0 To UBound(ary)
name = Replace(name, ary(i), "")
Next
nameT(row) = name
Next
End Sub
'企業名が一致かどうか判定する
Private Function Mymatch(ByVal name1 As String, ByVal name2 As String) As Boolean
Mymatch = False
Dim pos As Variant
pos = InStr(1, name1, name2, vbTextCompare)
If pos > 0 Then Mymatch = True
End Function
-----------------------------------------------------
一致の精度が悪ければその旨補足してください。
(一致すべきものが一致しない、一致してはいけないものが一致している)
100%解決できる保証はありませんが、多少のチューニングは行います。

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim ...続きを読む

QEXCELシートのタブの色

EXCELでシート(初期設定でsheet1とかsheet2とか)の色が変えられたと思ったんですけどやり方を忘れてしまいました。
教えてくださ~い!

Aベストアンサー

こんにちは。maruru01です。

一応、2000以前での方法を載せてあるページです。
裏技的なので、おすすめしませんが。

http://xcelfiles.homestead.com/Excel01_J.html#anchor_14133

参考URL:http://xcelfiles.homestead.com/Excel01_J.html#anchor_14133

Qエクセル2002 シート1のA1のコピーをシート2のB1~B12にしたい。

まず、シート2のB1に 「='シート1'!A1」と設定し、無事コピーができました。
次に、そのセルをコピーして、B2~12にペーストしたら、式が勝手に変更されていて
B2が「='シート1'!A2」など、「='シート1'!A*」のアスタリスク部分の数字が変わってしまい
コピーができません。どのようにすれば、できるようになるのでしょうか?
別シートやセルで試してみましたが、同じ現象でした。
この作業を、相当回数しなけれいけないので、各セルに書式を手作業で行っていくことは
現実的でないので、効率の良い方法を教えて頂ければ幸いです。
(シートとセルは任意で実際には、表題のようにシンプルではありません)
また、基本的なミスがあればご指摘下さい。よろしくお願いします。

Aベストアンサー

質問に対する回答は、No1様の回答の通りなのですが、

>この作業を、相当回数しなけれいけないので
作業の内容によって、コピーしたときに変わってくれた方が良い場合とそうでない場合があるのではないでしょうか?
(全部同じ内容でよければ、必ずしも全てをシート1への参照にしなくても
 (シート2の)B1への参照にしておいても同じ結果が得られます)

コピーしたときに変わるか換わらないかをコントロールするには、「絶対参照」「相対参照」を理解しておくのがよろしいと思います。

以下、参考までに。
http://www11.plala.or.jp/koma_Excel/contents1/mame1006/mame100601.html
http://www.nct9.ne.jp/poporu/18.html
http://www.eurus.dti.ne.jp/~yoneyama/Excel/zettai.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報