[[20130517084805]] 『空白ならセルを削除し、左詰めに』(木葉) ページの最後に飛ぶ

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

 

『空白ならセルを削除し、左詰めに』(木葉)
 おはようございます。毎度お世話になっております。

 配車表というものを作るにあたり、1013年2月20日から2014年2月19日まで1日分ずつのシートが365枚と、その中から必要なデータを取り出した。
 表(シート名「総合」)を1枚作成しました。

 今回、新たにシート(シート名「検索」)を挿入し、ある数値を検索すると、
 「総合」の中から該当する行を取り出し、表示するという関数を記入しました。

 365枚分のシートの必要なデータは、セルの結合がされておりますので、
 「総合」のシートでは、結合されたセルの先頭はそのまま文字として参照されますが、
 結合された2列目以降のデータは、そのまま「0」として参照されてしまっています。
 (例えば、A1からA4を結合していた場合、別シートに参照すると、A1にはそのままデータが、A2からA4には「0」が表示されます)

 ◆「総合」の表から、「0」の表示されている部分は削除し、左詰めにすることは可能でしょうか?

 「総合」のB2からS13872までが、必要なデータを取り出している範囲であり、全て関数での表記です。

 ちなみに、365枚のシートで、結合されているセルは、全て同じ列ではなく、FからS列を3等分されていたり、4等分されていたり・・・
 と様々で、全てが同じ列に収まっていないので、列をそのまま削除することができないのです。

 おそらく関数処理はできないと思いますので、マクロでの処理になるかもしれませんが
マクロはモジュールを開いて、完成されている記述を少しいじる程度しかできません・・・

 もしくは、「総合」の表の関数を変えて、空白セルは表示しないようにして左詰めに、
ということが可能であれば、そちらでも構いません。

 よろしければご教示下さいませ。

 【追記】「総合」の表は使わずとも、「検索」のどこかのセルに記入した時に、365枚のシートの中から検索し、その行を反映することが可能なら、
 この作業のほうが効率はいいのでしょうか?
 今の状況では、データ量が多いせいか、反映するのに5分強の時間がかかっています。


 結合されている左上以外のセルは空白と同じ扱いですから、
 =IF(参照先!A1="","",参照先!A1A1)
 のような関数にするのではダメでしょうか。
 (Mook)

 >Mook様
 ご回答ありがとうございます!
 教えていただいた式ですと、結合セルの1列目以外のセルのところは、空白セルとして返されますよね?
 空白セルの場合は、その表示はせず、文字列のある部分だけをズラーっと並べたいのですが・・・
 難しいですかね・・・?

(木葉)


 詰める処理の式は思いつかないのでマクロの例ですが、表示中のシートを詰めて
 新規シートに結果出力しています。
 (Mook)

 Sub PackToLeft()
    Dim srcWS As Worksheet
    Set srcWS = ActiveSheet

    Dim newWS As Worksheet
    Set newWS = Worksheets.Add(before:=Worksheets(1))

    Dim srcData
    srcData = srcWS.Range("B2:S13872")

    Dim dstData
    dstData = newWS.Range("B2:S13872")

    Dim r As Long
    Dim c As Long
    Dim dstC As Long
    For r = 1 To UBound(srcData, 1)
        dstC = 1
        For c = 1 To UBound(srcData, 2)
            If srcData(r, c) <> "" And srcData(r, c) <> 0 Then
                dstData(r, dstC) = srcData(r, c)
                dstC = dstC + 1
            End If
        Next
    Next

    newWS.Range("B2:S13872") = dstData
 End Sub

 >Mook様
ご返信ありがとうございます!

ほとんど意味は分かっていないのですが、そのままコピペさせていただいたところ、
うまく表示されました!

私ももっと勉強してVBAにも挑戦したいと思います

貴重なお時間たくさんとらせてしまい、申し訳ないです。
本当にありがとうございました!

(木葉)


コメント返信:

[ 一覧(最新更新順) ]


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