• 締切済み

VBAのxlDownと同じ昨日の関数

web2525の回答

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

=SMALL(IF((A:A=""),ROW(A:A),99999),1) ↑ これでA列の最初の空白セル行を求められます 配列計算なので【Shift】+【CTRL】+【Enter】で確定 配列計算なので列指定してしまうと、再計算がメタクチャ時間がかかります 範囲を指定することである程度改善されます =SMALL(IF((A1:A20=""),ROW(A1:A20),99999),1)

関連するQ&A

  • 関数による空白行を除き範囲を選択するマクロ

    添付ファイルのシートが同じファイル内にある別シートの値を参照の上、元シートの入力がない場合は、if関数により空白表示する様にしてあります。(関数自体は1万行くらいまで入力すみです。) このシートの空白表示以外のセル(A6:i22)までを選択するマクロを組みたいのですが普通のrange(A6:i6).End(xlDown).Rowを使うと空白表示行を含めた関数のある最終行を選択してしまいます。 サンプルの(A6:i22)をうまく選択するマクロを教えてください。

  • 関数で最終行を求めるにはどうすればいいでしょう

    A1からA5・A10に値が入ってるのですが VBAを使わずに関数で最終行を求めるにはどうすればいいでしょう? A10が最終行なので「10」が返ってほしいです。 空白行もあるのでCOUNTAだとダメみたいです。 COUNTA関数+INDEX関数を使えば求められるという情報を見ましたが使い方がわかりません。

  • エクセルVBAについて

    こんにちわ! 今、エクセルでAシートの入力した項目をBのシートへデーターが入力できるようなシステムを以下のようにくみました。 そこでBシートにデーターが入力されるのですが20行まで入力すると入力できないようにしたいのですが、なかなか上手くいきません。 A1からF20まで書式のロックを外しそれ以外のセルは保護をかけたのですがその状態でVBAを使って20行以上入力できませんという感じのエラー表示をしたいのですが、どうすればいいでしょうか? VBAは初心者ですが宜しくお願いします。 Private Sub CommandButton1_Click() Dim row As Integer row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1 Sheets("date").Cells(row, 1).Value = Range("B2").Value row = WorksheetFunction.CountA(Sheets("date").Columns(2)) + 1 Sheets("date").Cells(row, 2).Value = Range("B3").Value row = WorksheetFunction.CountA(Sheets("date").Columns(3)) + 1 Sheets("date").Cells(row, 3).Value = Range("B4").Value row = WorksheetFunction.CountA(Sheets("date").Columns(4)) + 1 Sheets("date").Cells(row, 4).Value = Range("B5").Value row = WorksheetFunction.CountA(Sheets("date").Columns(5)) + 1 Sheets("date").Cells(row, 5).Value = Range("B6").Value row = WorksheetFunction.CountA(Sheets("date").Columns(6)) + 1 Sheets("date").Cells(row, 6).Value = Range("B7").Value Sheets("統制入力").Select Range("B17").Select ActiveWindow.SmallScroll Down:=-9 Range("B3:B7").Select Selection.ClearContents Range("B1").Select End Sub

  • 空白セルをデータと認識してしまいます

    Excel2003を使用しています。 「マクロの記録」を使って、あるリストを自動作成 しようとしているのですが、うまくいきません。 A,B2つの列に分かれたデータを連結させるため、 C列に「CONCATENATE」関数を入れて適当な行まで コピーします。(それ以上はデータが入らないだろうと思われる100行目ぐらいまで) その後C列をコピーし、「値貼付け」をして 関数を値に変えます。 そうすると、たとえば実際には20行目までデータが 入っていたとすると、21行目~100行目までは 空白になりますよね? でも、どうもその空白行もデータとみなされている ようなんです…。 Range("C2").End(xlDown).Row で下端セルを探そうとすると、100行目に なってしまいますし、「ジャンプ」で空白セルを 探しても、同じ結果になります。 空白セルを選んで一度「Delete」を押すと 正しく「空白」と認識するようなのですが…。 「実際にデータの入っているセルとそうでないセル」 を自動で判別させたいので、 簡単に「何も入っていないセルを”空白”と正しく 認識させる方法」はありませんでしょうか?

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセル/指定範囲のセル数を返すワークシート関数は?

    エクセル2000です。 たとえば、A1:A100の範囲に、空白か否かを問わずセルがいくつあるかを返すワークシート関数はないでしょうか? 空白以外の数+空白の数で求められるかと思いましたが、 =COUNTA(A1:A100)+COUNTBLANK(A1:A100) では、計算の結果 ="" になっているセルが両方にカウントされてだめです。 VBAなら Range("A1:A100").Count で一発なのですが・・・・。

  • VBAのセル空白探しは??????多々仕様なども含めて迷っている部分があるので助けてください

    VBAで入力チェッカーを作っているのですが、仕様の部分でなやんでいます。 Private Sub CommandButton1_Click() Dim i As Long lastRow = Range("A65536").End(xlUp).Row For i = 10 To lastRow If Range("A" & i).Value = "" Then Range("A" & i).Value = ??? Exit For End If Next i End Sub USERがあるセルにデータを入力するとA列に5行ごと自動に値が入ります。 しかし、入力忘れで5行飛ばしたりはたまた10行空白が出来る場合があります。 その際のチェッカーの役割なのですが。。。 したから行を見ていってA10~最終行までの間でどこか空白があったら下から空白を探し空白箇所から5個上のセルの値を基本的にコピーをしていれる。 もし5個上のセルにも無かったら10個上みたいにやりたいのですがどうしたらよいでしょうか?

  • EXCELマクロのデータの最終行の取得

    EXCELマクロでRange("A1").End(xldown).Rowで、正しい値が取得できません。 A1からA6697まで、連続して入力しているので、途中に空白セルはありません。 それよりうしろにも、データはありません。 しかし、帰ってくる値はなぜかそれより遥か下の空白セルの「78889」です。 下からxlUpで検索しても同じ値が返ってきます。 A78889には、何も入力してありません。 rangeで範囲指定ではなく、usedrangeやcolumnsでみると正しく認識します。 どなたか分かる方いらっしゃいましたら、よろしくお願いします。 ※A1からA6697まではマクロで自動作成して埋めているセルなので、問題のセルを含めそれ以外の場所はなにも触っていません。

  • エクセルのVBAで

    ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。

  • 最終行の取得について

    今回、最終行を習得するにあたって壁にぶちあたってしまいました。。 まず、元dataがありましてそれを B1セル=IF($A1=0,"",A1)’下方向にペースト といったように数式を用いて空白にしたところ、 それを空白としてひらい出すことができず、別のシートに値のみ貼り付けを行っても、うまくいきません。現状このようなコードで最終行をとらえれません、何かいい方法がありますでしょうか? Range("B1").End(xlDown).Row