教えて!gooにおける不適切な投稿への対応について

エクセル(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

gooドクター

A 回答 (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」のシートが当質問の変換後の表になります。

こんな感じではいかがでしょうか。
    • good
    • 0
この回答へのお礼

スゴイ!!(゜▽゜)
やりたかったことが出来ました!!

ズバリのご回答ありがとうございました!m(_ _)m

お礼日時:2008/08/13 22:47

   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]をクリック
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/13 19:39

>最後尾セルに空白の数を表示したいのです。


◆ご要望の通りではなく、下のようでもいいなら
   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を押します
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/13 19:21

見た目だけ事であれば



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列を削除

こんなもんでいかがかしら?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/13 19:08

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/13 19:00

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

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

gooドクター

このカテゴリの人気Q&Aランキング