- ベストアンサー
エクセルで、ある列に不規則にある「連続した空白セルの最後尾セル」に空白の数を表示したい
エクセル(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
- みんなの回答 (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」のシートが当質問の変換後の表になります。 こんな感じではいかがでしょうか。
その他の回答 (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]をクリック
お礼
ご回答ありがとうございます。m(_ _)m 初心者にとてもわかりやすい解説感謝します。 質問のところで説明不足でした…実は C列、D列、E列・・・にもB列同様違う名前の列が続いてるんです…
- maron--5
- ベストアンサー率36% (321/877)
>最後尾セルに空白の数を表示したいのです。 ◆ご要望の通りではなく、下のようでもいいなら 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を押します
お礼
素早いご回答ありがとうございます。m(_ _)m ただ「最後尾セルに空白の数を表示したい」の部分を 重要視していますので… でもとても勉強になりました。
- noah7150
- ベストアンサー率46% (116/251)
見た目だけ事であれば 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列を削除 こんなもんでいかがかしら?
お礼
素早いご回答ありがとうございます。m(_ _)m 参考にさせていただきます。
- mitarashi
- ベストアンサー率59% (574/965)
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
お礼
素早いご回答ありがとうございます。m(_ _)m 簡単な関数でできればと思ったのですが、やはりVBAでやったほうが スッキリとできるんでしょうね。 実はまだエクセル初心者マークでして… VBAは一度もやったことがないんです… (ループ???こんな感じです) ただこれを機にVBAを一から勉強してみようかと思いました。 ぜひ教えてもらった短いコードを試してみたいです!
お礼
スゴイ!!(゜▽゜) やりたかったことが出来ました!! ズバリのご回答ありがとうございました!m(_ _)m