Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
最後まで関数が入っている時
投稿日時: 19/07/16 17:10:56
投稿者: ラングドシャ

お願いいたします。
 
社内のシステムから出力されるcsvデータがあります。(item.csv)
これは社用者が目的に応じて出力条件を設定できるため
出力件数が数十件〜数万件と、出力件数の幅がとても広くなります。
 
このcsvを修正.xlsのsheet1に貼り付け、sheet2でデータの体裁を
整えるような関数を入れています。(互換モードで使用中)
出力条件によって、件数の幅が大きいので関数は最後の65536まで
入れています。
実際には1万件以内で納まる場合が多く、最後のセルの計算結果が見たく
ctrl+↓で移動すると、当然ながら65536まで移動してしまいます。
 
csvの出力がない場合は""とするif関数が入っているので
sheet2をコピーして、sheet3へ値貼り付けをしても
最後のセルを調べると65536なりました。
 
そもそも作り方がまずいでしょうか?
このような場合はどういった作り方をすれば、使いやすいでしょうか?
アドバイスなどいただけませんか? よろしくお願いいたします。

投稿日時: 19/07/16 17:55:51
投稿者: ラングドシャ

追記です。
 
すみません。何がしたいかを書いていませんでした。
結果の表示されている最後のセルへの移動を簡単に行いたいです。
 
よろしくお願いいたします。

回答
投稿日時: 19/07/16 18:31:08
投稿者: ライスマン

ジャンプ機能
http://www4.synapse.ne.jp/yone/excel2010/excel2010_jump.html
 
こんな事じゃないですよね

回答
投稿日時: 19/07/16 19:37:12
投稿者: WinArrow
投稿者のウェブサイトに移動

>データが入っている最終のセル
逆に言うと、
何も入っていないセルの先頭(途中の空白セルが存在しないとして)
を探すことになります。
 
何も入っていないセルを「空白セル」といいます。
空白に見えるセル:数式で""を入れているセルは、「空白文字列セル」といいます。
シートの列演武にあらかじめ数式を仕込んでおくのは、あまり関心しませんね・・・
 
では、どうするか・・
 
数式で、体裁を整えている内容はどんなことでしょうか?
内容によっては、CSV形式ではなく、エキスと形式で取り込んだ方がよいかもしれません。

回答
投稿日時: 19/07/16 19:44:18
投稿者: んなっと

Sheet2のどこか右の方のセルに
 
=HYPERLINK("#"&ADDRESS(LOOKUP(1,0/(A1:A50000<>""),ROW(A1:A50000)),1),"クリック")
 
とか、だいぶ処理が遅くなりますが
 
=HYPERLINK("#"&LOOKUP(1,0/(A1:A50000<>""),"A"&ROW(A1:A50000)),"クリック")
 
 
※ただし、csvファイルをExcelで読み込むと
先頭の0が消えたり、(3)が-3になってしまったりするのを防ぎたいだけなら、関数は不要です。
「Excel テキストファイルウィザード」
でGoogle検索。
 

回答
投稿日時: 19/07/16 20:30:37
投稿者: WinArrow
投稿者のウェブサイトに移動

文章訂正
>内容によっては、CSV形式ではなく、エキスと形式で取り込んだ方がよいかもしれません。

 
内容によっては、CSV形式ではなく、テキスト形式で取り込んだ方がよいかもしれません。
 
 
 
 
 

投稿日時: 19/07/17 09:49:58
投稿者: ラングドシャ

ご回答ありがとうございます。
 
ライスマンさん
ありがとうございます。そのジャンプ機能の「最後のセル」で、結果が表示されている
最後のセルへジャンプしたいのですが、関数の最後のセルでジャンプしてしまいます。
 
WinArrowさん
ありがとうございます。
>シートの列演武にあらかじめ数式を仕込んでおくのは、あまり関心しませんね・・・
そうですよね。私もあまり好きではありませんが割とよく使ってしまっています。
どこまで増えるか想定できないリストなど・・・
体裁を整える関数というのは、今回はlookup関数で空白を埋めています。
詳しくは下に記載いたします
 
んなっとさん
ありがとうございます。教えていただいた関数で最後の結果のセルへジャンプできました。
すごいですね。こんなことができるのですね。感動です。
 
使用関数ですが・・・
csvデータには「分類コード」「商品コード」があり、社内システムの仕様変更により
分類コードがすべて表示されなくなりました。
「分類コード」→「商品コード」が昇順で並んでおり、「分類コード」が最初の行のみの
表示になり、同じコードが続く際は空白となってしまいました。
これを
=IF(sheet1!A2="","",LOOKUP(10^10,sheet1!B$2:sheet1!B2))
この関数を下までコピーし空白の分類コードを埋めて、sheet1の分類コード項目へ
値貼り付けしています。

回答
投稿日時: 19/07/17 11:03:00
投稿者: WinArrow
投稿者のウェブサイトに移動

>「分類コード」→「商品コード」が昇順で並んでおり、「分類コード」が最初の行のみの
>表示になり、同じコードが続く際は空白となってしまいました。
ということは、
上のセルを複写すれよいだけなので
数式を使わずに、ショーカットキーを使う方法を紹介します。
 
例えば
A2の分類コードがあり、A3〜A10まで空白という場合
A2〜A10を選択した状態で
[Ctrl]+[D]を押すと、空白セルにA2の値が複写されます。
件数がたくさんで大変だったら
↓のマクロを紹介しますので、
 
修正.xls の標準モジュールに登録していて
実行すれば、よいでしょう
 
Sub A列空白補正()
Dim BUNRUI, R As Long
 
    With ActiveSheet
        BUNRUI = .UsedRange.Columns("A")
        For R = LBound(BUNRUI) To UBound(BUNRUI)
            If BUNRUI(R, 1) = "" Then BUNRUI(R, 1) = BUNRUI(R - 1, 1)
        Next
        .UsedRange.Columns("A").Value = BUNRUI
    End With
End Sub
 

投稿日時: 19/07/17 11:35:24
投稿者: ラングドシャ

WinArrowさん
再度の回答ありがとうございます。
ctrl+Dの方法は、分類コードを1〜2件指定で出力した際には使えそうです。
ご紹介いただいたマクロのコードを試したところ、うまく空白が
埋まりました。マクロを使えば値コピーという手間が一つへります。
ので、今回利用させていただこうと思います。ありがとうございました。
 
また、んなっとさんの関数は非常に便利で、当方では関数が多く入った
資料を使うことが多いので、早速別の資料に有効活用させていただきました。
 
お二方、便利な機能をご紹介いただきありがとうございました。