[[20161122113428]] 『一覧表から別シートへリストアップ』(もも) ページの最後に飛ぶ

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

 

『一覧表から別シートへリストアップ』(もも)

許可番号   主たる運転者 車両の種類 ナンバー  許可運転期間
第0100号-1  鳥取 治夫  普通    鳥取100わ1131  2016/9/13 2016/12/12
第0101号   岐阜 信夫  普通    岐阜130す7292  2016/9/13 2016/12/12
第0105号-1  熊本 園子  普通    福岡100わ7536  2016/9/13 2016/12/8
第0105号-2  福岡 太郎  普通    福岡130す9214  2016/9/13 2016/12/8

こんな感じのデータが150件ほどあります。
「許可運転期間」は、実際は「2016/9/13 9時から2016/12/12 17時まで」
となっているのですがスタート(2016/9/13)とエンド(2016/12/12)でデータを分割しました。

●エンドが、許可運転期間の切れる日なのでどこかのセルに【12】と入力
 すると12月に期限の切れる許可番号を教えてくれる。
12では、なくて201612/1〜2016/12/15 とセルを分けて入力してこの
期間に期限の切れるものをりすとアップとか出来ますか?
●その許可番号を入力すると該当する車両をリストアップしてくれる。

こんなことがしたいのですが関数かマクロかで実現できないでしょうか?

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


期限切れ日付の列(F列?)にオートフィルタを掛けておき、日付の範囲指定をかけるだけではいかがでしょう?
マクロが良ければ、日付範囲指定する際にマクロの自動記録を行っておくだけです。
(???) 2016/11/22(火) 14:10

少し変更します。
A2セルに許可番号を入力すると
F2セルに該当する許可番号の運転期間(例:2016/9/13 9時から2016/12/12 17時まで)
が、表示されてそれに該当するものがリストアップされるようにしたいです。

別シートで「許可番号一覧」を、作成して「条件付き書書式」で許可終了日を入力すると
該当するものを反転するよう設定しました。
なので、それを、利用して許可番号から運転期間を読み取ってそしてリスト作成としたいです。

許可番号に対しての車両が1件ではなく3件だったり40件だったりまちまちです。
(もも) 2016/11/22(火) 15:06


 要件変更はいいのですが、その前に (???) 2016/11/22(火) 14:10 の、???さんからの提言に対しては
 いかがですか? わかった、その方向でやる とか、 いやいや、こんな理由でNGだとか、等々。

(β) 2016/11/22(火) 17:42


エクセルが、苦手な担当者からの依頼なのでオートフィルタとかは
使いたくないんです。
期限切れになる許可番号を調べて一瞬でリストアップできる
のが希望です。
エクセル関数も、すぐ壊したり消したりして凄く困った人でして。
なので、毎回壊されてやり直しっては面倒なので。
あと、私がやるとして忙しい時にでも一瞬で終わるのが理想です。

(もも) 2016/11/22(火) 19:06


 というコメントをいれられると、回答側でも、そうか、そうだよね、じゃぁ、こうしようという対応案を
 アップすることができ、効率的です。
 ??? さんのコメント内でも、これを、マクロ処理で【一瞬のうち】にやっつけることが示唆されていましたよね。

 追加で。

 まず、シートのレイアウト(元データと展開データ、条件指定欄 等々)を具体的に例示されると
 回答がつきやすいですよ。 A2 や F2 が 何かの入力欄であれば、タイトル行やデータは少なくとも1行目からではないでしょうし。

 それと、何をしたいのかが、ちょっとあいまいになっています。
 最初の説明の中の要件はすべて忘れて次の要件だけで対応したいのか、最初の要件に組み合わせるのか?

 日付の範囲をいれて、該当する許可番号を自動抽出したあと、それらを指定してデータを抽出?
 であれば、日付の範囲をいれれば、直接、関連データを抽出すればいいのでは? といった疑問も出てきますし。

 あと、1つのセル内に 2016/9/13 2016/12/12 と入っているのは、どういう処理をするにせよ、きわめて扱いにくいです。
 開始 と 終了 はセルを分けるべきです。
 元データが、こうなってしまっていて、どうしようもない という事情があるなら、許可運転期間 列を選択して
 データの区切り位置機能で、その右側の2列に分解しておく といったことも検討されたらよろしいかと。
 (これも、操作者にやらせるのは・・・であれば、マクロ内で作業用に、そのような展開を行うことも可能ですから)

(β) 2016/11/22(火) 19:14


???様
β様
 A     B    C     D        E        F   G H
許可番号   主たる運転者 車両の種類  車ナンバー   開始日   終了日 運転の期間
第0100号  -1  鳥取 治夫  普通    鳥取100わ1131   2016/9/13  2016/12/12
第0101号    岐阜 信夫  普通    岐阜130す7292   2016/9/13   2016/12/12
第0105号  -1  熊本 園子  普通    福岡100わ7536   2016/9/13   2016/12/8
第0105号  -2  福岡 太郎  普通    福岡130す9214   2016/9/13   2016/12/8

このような感じで、表がありデータが150件程あります。

余談ですが・・・例えば、「許可運転期間」は、実際は「2016/9/13 9時から2016/12/12 17時まで」(H列) と
元データはこうなっているのですがここから日付だけを取り出すこともマクロでは可能ってことですか?
H列を、分割したものが「F列」と「G列」です。

どのようにするかまだ迷っているところもあるのですが期限切れが知りたいけど
ピンポイントだと見逃す恐れがあるので「いつ」〜「いつまで」のこの期間に期限切れになるもの
を別シートにリストアップ出来たら嬉しいです。

●「いつ」〜「いつまで」 とセルを分けて入力してこの 期間に期限の切れるものをリストアップ
●その許可番号を入力すると該当する車両をリストアップしてくれる。

シート名(元データ)は「大型解除申請一覧」。(展開データ)期限切れまであと少しリスト←特に決まってないです笑

こういうときは、「いつ」〜「いつまで」というのは元データにおくべきですか?展開データにおくべきですか?

(もも) 2016/11/22(火) 22:12


 >>2016/9/13 9時から2016/12/12 17時まで

 こういう形の文字列ですか?
 もちろん、すべて、こういう形で入っているということであれば、マクロで抽出は可能です。

 ところで、許可番号 というのは 第0105号 ですか、それとも、そのあとの -1 等の枝番も含めたものが許可番号なんですか?
 (許可番号を入れて抜き出すという、その許可番号は、どちらを指定したいのか?)

 それと、繰り返しになりますが、いつからいつまで と指定してリストアップすればそれでいいのでは?
 わざわざ、そのあと、そのなかの許可番号を指定して絞り込む意味は?

 で、アップされたレイアウト、タイトル行が1行目 と考えていいのですね?
 (その前の説明の中で A2 や F2 に抽出条件を入力したい というところがあって、ちょっと わからなくなっているんですが)

(β) 2016/11/22(火) 22:21


β様

 もちろん、すべて、こういう形で入っているということであれば、マクロで抽出は可能です。
 →はい。

 ところで、許可番号 というのは 第0105号 ですか、それとも、そのあとの -1 等の枝番も含めたものが許可番号なんですか?
 → 枝番を、含めた部分までが許可番号です。

 それと、繰り返しになりますが、いつからいつまで と指定してリストアップすればそれでいいのでは?
 →はい、そうですね。

 わざわざ、そのあと、そのなかの許可番号を指定して絞り込む意味は?
 →なんとなく思っただけなのでなしでお願いします。

で、アップされたレイアウト、タイトル行が1行目 と考えていいのですね?
 →はい、そうです。

 (その前の説明の中で A2 や F2 に抽出条件を入力したい というところがあって、ちょっと わからなくなっているんですが)
 →なしで、大丈夫です。
(もも) 2016/11/22(火) 23:11

 ちょっとコードを考えてみます。時間ください。
 ところで、B列が 枝番 で C列 が 主たる運転者 ですね?

 それと、F,G は H から(手作業で)分解して記載されたのですかね?
 元々は、F列 に その "2016/9/13 9時から2016/12/12 17時まで" といった文字列が入っていた ということでしょうか?

(β) 2016/11/23(水) 00:36


 最初に開始日付、終了日付が日付型で入っているという前提で、フィルターオプション処理で書いていて
 でも、『2016/9/13 9時から2016/12/12 17時まで』といった文字列ということで、そこから終了日付を抜き出すループを追加。
 書き終わって眺めてみれば、ループ処理をやっているので、フィルターオプションなしでもできたなぁと 反省。
 (フィルターオプションなし版も気力があれば書いてみます)

 レイアウトは以下を想定。

 ●元シート

  G列を作業列に使います。

    |[A]     |[B] |[C]         |[D]       |[E]          |[F]                                 
 [1]|許可番号|枝番|主たる運転者|車両の種類|車ナンバー   |運転の期間                          
 [2]|第0100号|  -1|鳥取治夫    |普通      |鳥取100わ1131|2016/9/13 9時から2016/12/12 17時まで
 [3]|第0101号|    |岐阜信夫    |普通      |岐阜130す7292|2016/9/13 9時から2016/12/12 17時まで
 [4]|第0105号|  -1|熊本園子    |普通      |福岡100わ7536|2016/9/13 9時から2016/12/8 17時まで 
 [5]|第0105号|  -2|福岡太郎    |普通      |福岡130す9214|2016/9/13 9時から2016/12/8 17時まで 

 ●展開シート

  B1 に抽出開始日、B2 に抽出終了日。 A3:A4 を作業域に使っています。
  結果は、抜き出した終了日も含めて、D列から右に表示しています。

    |[A] |[B]       |[C]|[D]     |[E] |[F]         |[G]       |[H]          |[I]                                |[J]      
 [1]|開始|2016/12/1 |   |許可番号|枝番|主たる運転者|車両の種類|車ナンバー   |運転の期間                         |終了日   
 [2]|終了|2016/12/10|   |第0105号|  -1|熊本園子    |普通      |福岡100わ7536|2016/9/13 9時から2016/12/8 17時まで|2016/12/8
 [3]|    |          |   |第0105号|  -2|福岡太郎    |普通      |福岡130す9214|2016/9/13 9時から2016/12/8 17時まで|2016/12/8

 ●コード

Sub Sample()

    Dim re As Object
    Dim r As Range
    Dim v As Variant
    Dim i As Long
    Dim mt As Object
    Dim shn As String

    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.Pattern = "\d{4}\/\d{1,2}\/\d{1,2}(?=\s{1})"
    With Sheets("大型解除申請一覧")
        Set r = .Range("A1", .Range("A" & Rows.Count).End(xlUp)).Columns("A:G")
    End With

    '開始日/終了日の抽出とセット
    ReDim v(1 To r.Rows.Count, 1 To 1)
    For i = 1 To r.Rows.Count
        If i = 1 Then
            v(i, 1) = "終了日"
        Else
            Set mt = re.Execute(r.Cells(i, 6).Value)
            If mt.Count = 2 Then    '念のため
                v(i, 1) = mt(1)
            End If
        End If
    Next

    r.Columns(r.Columns.Count).Value = v
    shn = r.Parent.Name & "!"

    'フィルターオプションによる抽出と転記
    With Sheets("期限切れまであと少しリスト")
        .UsedRange.Offset(, 2).ClearContents
        .Range("A3").ClearContents
        .Range("A4").Formula = "=AND(" & shn & "G2>=B$1," & shn & "G2<=B$2)"
        r.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=.Range("A3:A4"), CopyToRange:=.Range("D1")
        .Range("A4").ClearContents
        r.Columns(r.Columns.Count).ClearContents
        .Select
    End With

End Sub

(β) 2016/11/23(水) 06:42


 フィルターオプションなし版です。
 シート要件は ↑ と同じ。ただし、シート上の作業域は使っていません。

Sub Sample2()

    Dim re As Object
    Dim v As Variant
    Dim i As Long
    Dim j As Long
    Dim mt As Object
    Dim shF As Worksheet
    Dim shT As Worksheet
    Dim dtS As Date
    Dim dtE As Date
    Dim dtD As Date
    Dim c As Range

    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.Pattern = "\d{4}\/\d{1,2}\/\d{1,2}(?=\s{1})"

    Set shF = Sheets("大型解除申請一覧")
    Set shT = Sheets("期限切れまであと少しリスト")

    shT.Columns("D:J").ClearContents
    shT.Range("D1:I1").Value = shF.Range("A1:F1").Value
    shT.Range("J1").Value = "終了日"
    dtS = shT.Range("B1").Value
    dtE = shT.Range("B2").Value

    With shF.Range("A2", shF.Range("A" & Rows.Count).End(xlUp))

        ReDim v(1 To .Rows.Count, 1 To 7)

        For Each c In .Cells
            Set mt = re.Execute(c.EntireRow.Range("F1").Value)
            If mt.Count = 2 Then    '念のため
                dtD = mt(1)
                If dtD >= dtS And dtD <= dtE Then
                    i = i + 1
                    For j = 1 To 6
                        v(i, j) = c.Offset(, j - 1).Value
                    Next
                    v(i, 7) = dtD
                End If
            End If
        Next

    End With

    '結果の転記
    shT.Range("D2").Resize(i, 7).Value = v
    shT.Select

End Sub

(β) 2016/11/23(水) 07:19


β様

朝早くからありがとうございました!
希望通りの動きが出来ました。

こんなマクロを早くスラスラ書けるようになりたいです。
また、何かありましたらよろしくお願い致します。

あとは、条件書式等で罫線を引くようにして完成です!
(もも) 2016/11/23(水) 10:14


β様

自動で、罫線弾く件で・・・

=OR($D2:$J2<>"")

↑ で、細線を引くように設定したのですが最終行(つまり、次の行が空白の時)は細線では
なく実線にしたいのですがどうもうまくいきません。
データの入っていない行がすべて実線になってしまいます。

適用先 → =$D$2:$J$109

どういう条件を設定すればできるのでしょうか?
(もも) 2016/11/23(水) 11:18


 条件付き書式であれば、(横線のみ考えれば)D2:J1000 あたりを選択して

 =AND(D2<>"",D3="")  これで実線
 =AND(D2<>"",D3<>"") これで細線

 と、2つの条件を登録すればいいかと思いますが、
 βであれば、転記をマクロでやっているわけですから、罫線もマクロで設定します。
 以下、1行目のタイトル部分も含めて設定しています。

 Sample でいえば 最後のほうの .Select の上に

    '罫線処理
        .Columns("D:J").Borders.LineStyle = xlNone
        With .Range("D1").CurrentRegion
            With .Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .Weight = xlThin
            End With
            With .Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .Weight = xlHairline
            End With
            .Rows(1).BorderAround xlContinuous, xlThin
            .Offset(1).Resize(.Rows.Count - 1).BorderAround xlContinuous, xlThin
        End With

 Sample2 でいえば 最後のほうの shT.Select の上に

    '罫線処理
    With shT
        .Columns("D:J").Borders.LineStyle = xlNone
        With .Range("D1").CurrentRegion
            With .Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .Weight = xlThin
            End With
            With .Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .Weight = xlHairline
            End With
            .Rows(1).BorderAround xlContinuous, xlThin
            .Offset(1).Resize(.Rows.Count - 1).BorderAround xlContinuous, xlThin
        End With
    End With

 を入れて試してみてください。(条件付き書式をせっていしているなら、それらは、すべて削除しておいてください)

(β) 2016/11/23(水) 13:05


こんにちは。
いまごろ、蒸し返すようで恐縮ですが。

>エクセルが、苦手な担当者からの依頼なので(中略)
>エクセル関数も、すぐ壊したり消したりして凄く困った人でして。
>なので、毎回壊されてやり直しっては面倒なので。

こういう対応は、そのひとにとっては「あなたは出来なくても構いませんよ ^ ^ 」
というメッセージになります。
へんな言い方ですが、ももさんが その人の出来ない状態を追認しているかたちです。
強い表現をすれば、そのひとの能力向上を阻害しているかたちです。
うまくないと思います。

>エクセル関数も、すぐ壊したり消したりして凄く困った人でして。
そういうばあいにご本人が困るようにもって行けば、困るのが好きな人はいませんから、
だんだん 壊さないよう消さないよう気をつけるようになります。
というか、気をつけることが出来るようになります。

さいわい困ったことが起きたときに ももさんに頼るという信頼関係がありますから
この信頼関係を基礎に 状況を改善していかれてはと思います。
まずは関数が壊れたら ももさんの指導のもとで ご本人に直していただきましょう(とても難しいものを除く)。
それと「何をしたらこうなったか」思い出していただきましょう(見当が付いても あえて問う。
分からないといわれても怒らない。)。自分の問題と自覚していただくのが第一歩です。

よろしければ検討してみてください。

( 佳 ) 2016/11/23(水) 14:00


β様

ありがとうございます。
条件付き書式を、クリアしてやってみたのですが「D列」だけ罫線が入って「E列」〜「J列」
までが罫線入りませんでした。

.Rows(1).BorderAround xlContinuous, xlThin
.Offset(1).Resize(.Rows.Count - 1).BorderAround xlContinuous, xlThin

あたりの、(1)の数字を変更してみたりしたのですが下へは動くのですが横へ動かなくて・・・。
どう変更すればよいか途方に暮れています。

ご教示願います。

(もも) 2016/11/23(水) 14:09


佳様

はい、アドバイスありがとうございます。

私の話を素直に聞いてくれるような子であればいいのですが幸い私のことを苦手なことを
何でも自分の代わりにやってくれる人っていう扱いです。

なので、その子はもう2年目で他の2年目よりかなり劣っていますが幸いそれには全く
気づいておらず・・・。

この時期で、そんな状態なので3年目になっても同じようなことになるのではと思っていますが
事務所の職員の方(私は、出向社員)も教育を放棄してしまっています(笑)

教えても、教え損かなって思ってます。

本人は、自分のことはすごく仕事出来ているという風に思っています。
そして、最初のころは教えていたのですがまったく身についていないんですよね・・・。
(もも) 2016/11/23(水) 14:17


 >>「D列」だけ罫線が入って「E列」〜「J列」 までが罫線入りませんでした。 

 気にはなっていたのですが、コード処理の前提としては、枝番列にもタイトルが入っているという前提です。
 枝番列にタイトルがなく、かつ抽出されたデータの、いずれにも枝番がない場合、つまり、展開したイメージのE列が空白列であれば
 そのようになります。

 まぁ、そういった状況であっても対応してみました。

 Sample,Sample2 ともに罫線処理のところの

 With .Range("D1").CurrentRegion

 これを

 With .Range("D1", .Range("D" & Rows.Count).End(xlUp).EntireRow.Columns("D:J"))

 に変更してみてください。

(β) 2016/11/23(水) 15:09


こんにちは。

ももさん、そりゃ大変そうですねぇ。

>事務所の職員の方(私は、出向社員)も教育を放棄してしまっています(笑)
いまは ももさんに教育の権限があるということでいいですか?

わたしはそういうかたには、いうことをきいてくれないならお手伝いできないと言います。
実際、できませんから。お手伝いではなくなってしまいますので。
そのかたの仕事を 代わりにしてあげるつもりもありませんし。

実務的には、教育するときは自分は絶対にマウスに触らない、これです。
簡単なことから、少しずつ、やらせる。教えるではなく、やらせる。
うまくいったらうんと喜んで見せて、褒めまくる。
>本人は、自分のことはすごく仕事出来ているという風に思っています。
本人はそう思っていても、ほめられた経験は少ないと思います。褒めるのは効きます。

( 佳 ) 2016/11/23(水) 16:02


β様

罫線処理について再度ご教示願います。

縦罫線を、なしで横罫線だけにしたい場合どう変更すればよいですか?

タイトル行の上下と最終行は、実線。
その間の行は、細線。

に、変更したい場合を教えてください。
(もも) 2016/11/23(水) 21:43


 罫線処理のコードから以下を削除してください。

            With .Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .Weight = xlThin
            End With

(β) 2016/11/23(水) 22:03


すでに解決済みのようですが、少し気になりましたので。
>エクセルが、苦手な担当者からの依頼なのでオートフィルタとかは
>使いたくないんです。
ここは、フィルタ処理が基本です。
オートフィルタか、フィルタオプションかは別として。
  
フィルタ処理に慣れてもらうのが、正しいアプローチのはずです。
それを説明するのが手間だから、
担当者にはできないだろうから、
だからマクロで、 というのは私には理解できない。
 
マクロだって、フィルタ処理を自動記録することで可能です。
何も手作業で延々とやりなさい、と(???)さんはおっしゃってはいません。
誤解していませんか?
  
そもそも質問するのに、誰それからの依頼だというのは関係ないです。
あなたがマクロを自分で作ろうとしているか、
そのためのサポートを求めているのかどうか、のほうがよほど気になります。
結果だけ欲しがっているあなたのスタンスのほうが、私は気になりました。
偏屈じじいの繰り言です。

(γ) 2016/11/23(水) 23:20


 γさんから指摘がありますが、本件は 内容的には フィルター処理をするテーマなんです。
 それを妨げているというか、困難にしているのは F列にある、『2016/9/13 9時から2016/12/12 17時まで』といった文字列です。

 以下は、マクロコードを離れた余談です。

 この文字列は、何か別のシステムから生成されたものでしょうか? 
 それであれば、うなづけますが、もし、これが、【誰かが、このように入力】しているとすれば、ちょっと奇異に感じます。

 入力であれば、最初から、 F列とG列に 2016/9/13  や 2016/12/12 と いれるほうが、入力も簡単ですよね。

 『2016/9/13 9時から2016/12/12 17時まで』という文字列を、その記述ルールを守りながら入力するというのは
 大変ですから。

 もし、見た目で、このような形にしておきたいということなら、表示書式を工夫すれば 2016/9/13 9時から とか
 2016/12/12 17時まで といった表示にすることもできますよね。

 そうしておけば、マクロ処理をするにしても、ほんの数行で書くことができますし、マクロ記録もとれますので
 ももさんご自身で仕上げることもできるたはずと思う次第です。

 なぜ、このような文字列になっているのか、後学のために知りたい気持ちですね。

(β) 2016/11/24(木) 09:19


解決済かと思い書き込みを遠慮してましたが、

>エクセル関数も、すぐ壊したり消したりして凄く困った人でして。
>なので、毎回壊されてやり直しっては面倒なので。

こういう人に、自分でも理解できないマクロを使わせるのは、
危険だと思います。
エクセルの標準機能でちゃんと使えるようになりましょう。(ももさんも含めて)
触ってはいけないセルはシートの保護の設定で触れなくしましょう。
マクロを使わなくてもミスを出来るだけ少なくする方法は、
エクセルの標準機能にいろいろあると思います。

>本人は、自分のことはすごく仕事出来ているという風に思っています。
>そして、最初のころは教えていたのですがまったく身についていないんですよね・・・。
他人を批評する前に自分が精進したいですよね^^

****************************************************

マクロを使わなくても、
ピボットテーブルでフィルターをかけておくと
「更新ボタン押下で、来週期限切れのデータをピックアップする。」
という動作は実現できそうですね。
罫線までは試してないですけど、そんなの要ります?
更新の手続きを来週しないといけない車が解ればいいのでは?

マクロで処理するなら、
車検や、免許証の有効期限切れ
までチェックするアプリを作りたいですねー。。。。

あと、
>2016/9/13 9時から2016/12/8 17時まで

と、入力するのも手間だし、スペースの入れ方など個人で好みが分かれますので、
当初提示された、日付のみを入れる仕様の方が扱いが簡単だと思います。

いまさらですが他の回答者さんへ参考資料>
https://ja.wikipedia.org/wiki/%E9%80%9A%E8%A1%8C%E7%A6%81%E6%AD%A2%E9%81%93%E8%B7%AF%E9%80%9A%E8%A1%8C%E8%A8%B1%E5%8F%AF%E8%A8%BC
このようなの許可をもらった車両の一覧を作っておられると思います。
1ヵ月ごとに更新なので、
その日付を管理したいのだと思います。
(まっつわん) 2016/11/24(木) 09:49


こんにちは。

>2016/9/13 9時から2016/12/8 17時まで

あれ、質問冒頭では「セルを分けました」(大意)となってたのに。
それが正しいのに。
どうして1セルに戻ってしまったんでしょう。

( 佳 ) 2016/11/24(木) 10:02


 >>どうして1セルに戻ってしまったんでしょう。

 戻した犯人はβ??

 元データの文字列から もも さんが (β) 2016/11/22(火) 19:14 で指摘したことを受けて
 【せっせと】文字列を見ながら、開始日と終了日を 手入力 で作られたのかなと、そう思いましたので。
 毎回、それも 大変だろうなと。

 もちろん、最初から (β) 2016/11/24(木) 09:19 でコメントしたように、日付で入力しておくということが
 大切なんだろうと思っています。

(β) 2016/11/24(木) 10:13


まっつわん様

他人を批評する前に自分が精進したいですよね^^
→そうですね、もっと色々と勉強します。

マクロで処理するなら、

 車検や、免許証の有効期限切れ 
 までチェックするアプリを作りたいですねー。。。。 
 →ほんと、それ!一番ほしいのはこれだったりします。
  別の工事では、実際にこれが重要だったりして切れていて問題になったりしたことが
  あったのであれば最高です。
1ヵ月ごとに更新なので、 
その日付を管理したいのだと思います。
 ⇒はい、まさに、これです!
(もも) 2016/11/24(木) 12:59

β様
佳様

入力であれば、最初から、 F列とG列に 2016/9/13 や 2016/12/12 と いれるほうが、入力も簡単ですよね。
 はい、実際には↑のように入力しました。(入力というか区切り位置を使って分割して文字列操作を
 使って元の文字もとりあえず入れました。
 よくよく考えたら元も文字には戻す必要がなかったです。
 そのままの長々した状態から終了日が取り出せるならと思ってコピペで文字に戻してみましたが
 今後のことを考えたら面倒でした・・・。
  ↓

 『2016/9/13 9時から2016/12/12 17時まで』という文字列を、その記述ルールを守りながら入力するというのは

(もも) 2016/11/24(木) 13:08


>→そうですね、もっと色々と勉強します。
もう、マクロ作ってもらったから
ピボットテーブル案は、試しもせず廃案ですかね?

それならそれで終わりでいいのですが、
とりあえず、解決なのか、
引き続き色々なアイデアをもらいながら、
いろいろ試して現状により良い方法を勉強してみるのかが、
コメントから解らないので、
聞いてみます。

>あれば最高です。
それはそうだろうと思ってコメントしてます。
で、自分で作れる(=メンテナンス出来る)まで勉強するなら、
時間のあるときにお手伝いしたいと思いますが、
作ってもらえるなら歓迎だが自分で作るのは遠慮したい、
というスタンスなら、協力出来ないかなと思います。

その辺り、どうしたいんでしょうか?
(まっつわん) 2016/11/24(木) 13:42


 最終仕様をどうされるのか、わかりませんけど、とりあえず、アップしたコードから、縦罫線をなくすという部分は
 皆さんのレスの森の中に紛れ込んでしまっていますが、(β) 2016/11/23(水) 22:03 でレスしていますので
 お試しください。

(β) 2016/11/24(木) 14:16


こんにちは。

>戻した犯人はβ??
誰が、には関心がありません。
なぜ、に関心があります。

>よくよく考えたら必要がなかったです。
なるほど。
( 佳 ) 2016/11/24(木) 14:47


β様

縦罫線削除でのコードありがとうございました。

って、さっき書くのを忘れていました・・・。

ただ、周りの枠線も個人的にはいらないなぁ〜って思っているのですが今回は
これでよしとします。
(あった方がなんとなくしっくりきたので・・・。)

まっつわん様
>あれば最高です。
それはそうだろうと思ってコメントしてます。
で、自分で作れる(=メンテナンス出来る)まで勉強するなら、

 時間のあるときにお手伝いしたいと思いますが、 

はい、自分で作れる(=メンテナンス出来る)まで勉強したいと思います。
(もも) 2016/11/24(木) 16:20


 もし、元データとして開始日と終了日が日付型で別セルに記載されているという【まっとうなレイアウト】にできるなら
つまり 大型解除申請一覧 が以下のレイアウトだとします。

    |[A]     |[B] |[C]         |[D]       |[E]          |[F]      |[G]       
 [1]|許可番号|枝番|主たる運転者|車両の種類|車ナンバー   |開始日   |終了日    
 [2]|第0100号|  -1|鳥取治夫    |普通      |鳥取100わ1131|2016/9/13|2016/12/12
 [3]|第0101号|    |岐阜信夫    |普通      |岐阜130す7292|2016/9/13|2016/12/12
 [4]|第0105号|  -1|熊本園子    |普通      |福岡100わ7536|2016/9/13|2016/12/8 
 [5]|第0105号|  -2|福岡太郎    |普通      |福岡130す9214|2016/9/13|2016/12/8 

 期限切れまであと少しリスト は以下。

    |[A] |[B]       
 [1]|開始|2016/12/1 
 [2]|終了|2016/12/10

 この場合、以下の準備と操作で簡単に抽出可能です。
準備はあらかじめ1回やっておけばいいので、操作部分のみであれば あっという間ですし、
必要なら、この操作部分をマクロ記録すれば、そのまま使えるマクロが生成されます。
マクロは驚くほど短いコードになります。(抽出転記処理は実質的に AdvancedFilterメソッド 1行になります)

 ・準備 抽出条件シートを用意します。仮に "条件" というシートだとします。
    このシートのA1 は空白に、
    A2 に、=AND(大型解除申請一覧!G2>=期限切れまであと少しリスト!B$1,大型解除申請一覧!G2<=期限切れまであと少しリスト!B$2)
    といれておきます。(このシートは非表示にしておいてもOKです。)

 以下、操作ですが、マクロ記録で出来上がったコードを、どんな状況でもそのまま使えるように、大型解除申請一覧 を表示してから
 操作を開始してください。

 ・操作

  1.期限切れまであと少しリスト シート を選択して表示させます
  2.D:J列を選択して Deleteキーでクリア(値が入っていなくてもマクロ記録のためにクリアという操作をしましょう)
  2.データタブ フィルターグループの 詳細設定 を選択
  3.でてきたダイアログに対して
   1)リスト範囲(L) を 大型解除申請一覧 シート の A:G列
   2)検索条件範囲(C) に 条件 シートの A1:A2
   3)指定した範囲(O) を選び、抽出範囲(T)に 期限切れまであと少しリスト シートの D1
   4)OKボタン

 これをマクロ記録して出てくる、たったこれだけのコードで抽出・転記が完了します。

 みなさんいわれている、【エクセルの機能の活用と、活用しやすいレイアウトの準備】の効能が
 実感できると思います。

(β) 2016/11/24(木) 17:09


まっつわん様

ピボットテーブル案、やってみます。
(もも) 2016/11/24(木) 17:23


>まっつわん様
>ピボットテーブル案、やってみます。

お^^すばらしい^^

でも、やり方聞かなくてもわかりますかねぇ。。。

調べてなんとかなればいいけど。。。ま、また聞いて下さい^^

(まっつわん) 2016/11/24(木) 17:37


コメント返信:

[ 一覧(最新更新順) ]


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