• ベストアンサー

エクセルで、ある列に不規則にある「連続した空白セルの最後尾セル」に空白の数を表示したい

エクセル(2003)を使ってます。 下のような表があるとします    A       B 1  年月日  鈴木太郎 2  2008/1/1   鈴木 3  2008/1/2      4  2008/1/3   鈴木 5  2008/1/4      6  2008/1/5      7  2008/1/6      8  2008/1/7      9  2008/1/8   鈴木       ↓         A       B 1  年月日  鈴木太郎 2  2008/1/1   鈴木 3  2008/1/2    1 4  2008/1/3   鈴木 5  2008/1/4      6  2008/1/5      7  2008/1/6      8  2008/1/7    4 9  2008/1/8   鈴木 B2~B9(実際にはB1500くらいまで…)の"鈴木"と"鈴木"の間にある連続した空白セルの 最後尾セルに空白の数を表示したいのです。 ※ちなみにB列は同じ名前"鈴木"しか入ってません。 ご指導のほうよろしくお願いします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • saburo0
  • ベストアンサー率35% (76/216)
回答No.5

とりあえず、今思い付いた内容を回答します。 「Sheet1」のシートが当質問の変換前の表であるものとします。 ・「Sheet2」のシートを準備し、A1セルに下記式を入力後、「Sheet1」にデータがある範囲までA1の式を下及び右にコピーします。  =IF(Sheet1!A2="","",ROW()) ・「Sheet3」のシートを準備し、A1セルに下記式を入力後、「Sheet1」にデータがある範囲までA1の式を右にコピーします。  =IF(Sheet1!A1="","",Sheet1!A1) ・「Sheet3」のA2セルに下記式を入力後、「Sheet1」にデータがある範囲までA2の式を下及び右にコピーします。  =IF(Sheet1!A2="",IF(Sheet2!A2="","",Sheet2!A2-MAX(Sheet2!A$1:Sheet2!A1)-1),Sheet1!A2) ・「Sheet3」のA列の書式は、当該の日付形式に設定します。 「Sheet3」のシートが当質問の変換後の表になります。 こんな感じではいかがでしょうか。

umahiro
質問者

お礼

スゴイ!!(゜▽゜) やりたかったことが出来ました!! ズバリのご回答ありがとうございました!m(_ _)m

その他の回答 (4)

noname#204879
noname#204879
回答No.4

   A     B   C  D   E   F   G  H  I 1 年月日  鈴木太郎   TMP1 TMP2 TMP3 TMP4  TMP5 2 2008/1/1 鈴木            1 3 2008/1/2         1   1   1   1    1 4 2008/1/3 鈴木            2 5 2008/1/4            1   1 6 2008/1/5               2 7 2008/1/6               3 8 2008/1/7         1      4   4    4 9 2008/1/8 鈴木            5 非常に“原始的”な方法ですが・・・ 1.次の各セルにそれぞれ右に示した式を入力   D2: =IF(AND(B2="",B3<>""),1,"")   E2: =IF(AND(B2="",B1<>""),1,"")   F2: =IF(E2=1,1,SUM(F1,1))   G2: =IF(D2=1,F2,"") 2.範囲 D2:G2 を下方にズズーッとドラッグ&ペースト 3.範囲 G2:G9 を[コピー]して、セル I2 に[値の貼り付け] 4.セル I1 で[オートフィルタ]を設定して“(空白セル)”でデータを   抽出 5.列Iには抽出された(空白セルに見える)データを全部選択して、   Deleteキーを一発パシーッ 6.セル I1 で設定していた[オートフィルタ]で“(すべて)”を選択   (あるいは[オートフィルタ]を解除) 7.範囲 I2:I9 を[コピー]した後、セル B2 の右クリックから[形式を   選択して貼り付け]を選択 8.“空白セルを無視する”にチェック入れ 9.[OK]をクリック

umahiro
質問者

お礼

ご回答ありがとうございます。m(_ _)m 初心者にとてもわかりやすい解説感謝します。 質問のところで説明不足でした…実は C列、D列、E列・・・にもB列同様違う名前の列が続いてるんです…

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

>最後尾セルに空白の数を表示したいのです。 ◆ご要望の通りではなく、下のようでもいいなら    A       B 1  年月日  鈴木太郎 2  2008/1/1   鈴木 3  2008/1/2    1 4  2008/1/3   鈴木 5  2008/1/4    1  6  2008/1/5    2  7  2008/1/6    3  8  2008/1/7    4 9  2008/1/8   鈴木 ■手順■ 1)B1:B9 の範囲を指定します 2)ツールバーの「編集」→「ジャンプ」→「セル選択」を選択します 3)「空白セル」にチェックして、OK 4)そのままで、数式バーに、 =ROW()-MATCH("",$B$1:B2,-1) 数式を入力して、Ctrlを押しながらEnterを押します

umahiro
質問者

お礼

素早いご回答ありがとうございます。m(_ _)m ただ「最後尾セルに空白の数を表示したい」の部分を 重要視していますので… でもとても勉強になりました。

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.2

見た目だけ事であれば C2に =IF(B2<>"",B2,IF(B1<>"",1,C1+1)) D2に =IF(B2<>"",C2,IF(B3<>"",C2,"")) と入力し C2:D2をコピーしてC3:D最終行までを選択して貼り付け 列C:Dを非表示 もしくは、D列を選択してコピー、B列を選択し編集(E)から形式を指定して貼り付け(S)を選び値(V)を選択してOK C:D列を削除 こんなもんでいかがかしら?

umahiro
質問者

お礼

素早いご回答ありがとうございます。m(_ _)m 参考にさせていただきます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

VBAでやる例です。普通にループを回してもつまらないので、短いコードにチャレンジしてみました。 Sub test() Dim emptyArea As Range Dim myArea As Range Set emptyArea = ActiveSheet.Range("a1").CurrentRegion.Columns(2).SpecialCells(xlCellTypeBlanks) For Each myArea In emptyArea.Areas myArea.Cells(myArea.Rows.Count, 1) = myArea.Rows.Count Next End Sub

umahiro
質問者

お礼

素早いご回答ありがとうございます。m(_ _)m 簡単な関数でできればと思ったのですが、やはりVBAでやったほうが スッキリとできるんでしょうね。 実はまだエクセル初心者マークでして… VBAは一度もやったことがないんです… (ループ???こんな感じです) ただこれを機にVBAを一から勉強してみようかと思いました。 ぜひ教えてもらった短いコードを試してみたいです!