よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

ツリー一括表示

Nomal 表 データの入っているところだけ縦に取.. /numa Mail (21/08/07(Sat) 15:14) #13537
Nomal Re[1]: 表 データの入っているところだ.. /よねさん (21/08/07(Sat) 16:20) #13538
  └Nomal Re[2]: 表 データの入っているところだ.. /numa Mail (21/08/07(Sat) 20:50) #13539
    └Nomal Re[3]: 表 データの入っているところだ.. /よねさん (21/08/08(Sun) 08:35) #13540
      └Nomal Re[4]: 表 データの入っているところだ.. /numa Mail (21/08/08(Sun) 10:27) #13541
        └Nomal Re[5]: 表 データの入っているところだ.. /よねさん (21/08/08(Sun) 12:01) #13542
          └Nomal Re[6]: 表 データの入っているところだ.. /numa Mail (21/08/08(Sun) 13:52) #13543
            └Nomal Re[7]: 表 データの入っているところだ.. /よねさん (21/08/08(Sun) 14:15) #13544
              └Nomal Re[8]: 表 データの入っているところだ.. /numa Mail (21/08/08(Sun) 15:03) #13545
                └Nomal Re[9]: 表 データの入っているところだ.. /よねさん (21/08/08(Sun) 15:10) #13546
                  └Nomal Re[10]: 表 データの入っているところだ.. /numa Mail (21/08/08(Sun) 15:25) #13547


親記事 / ▼[ 13538 ]
■13537 / 親階層)  表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/07(Sat) 15:14:07)
    教えて下さい。
    
       A   B   C   D   E   F   G     Y
    1   7  80   2  8           7
    2   5                 80 
    3   6 21   3                          2      
    4  11 79                              8 
    5  47   7                              5 
    6    2                                  6
                                           21
                                            3
                                           11
    
    上記表のA1〜G6にデータが入っています。
    表のデータの入っている所だけを縦に(Yの欄)
    に取り出したいのですが、
    
    INDEX($A$1:$G$6,INT((ROW(A1)-1)/7)+1,MOD(ROW(A1)-1,7)+1)
    のような関数だと 空白のセルも「0」でもってきてしまいます。
    データの部分だけを拾って 縦にならべる方法を知りたいです。
    よろしくお願いします。
    
    

[ □ Tree ] 返信/引用返信 削除キー/

▲[ 13537 ] / ▼[ 13539 ]
■13538 / 1階層)  Re[1]: 表 データの入っているところだけ縦に取り出す
□投稿者/ よねさん -(2021/08/07(Sat) 16:20:05)
    関数で解決するのは(私には)難しいと思いましたので、VBAでいかがでしょう?
    Sub test()
      Dim myRng As Range, cn As Long
      Dim c As Range
      Set myRng = Range("A1:G6")
        For Each c In myRng
            If c.Value <> "" Then
                cn = cn + 1
                Range("Y" & cn).Value = c.Value
            End If
        Next c
    End Sub
    

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13538 ] / ▼[ 13540 ]
■13539 / 2階層)  Re[2]: 表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/07(Sat) 20:50:13)
    ありがとうございます。
    VBAは使ったことがほとんどないので、コピペして使いました。
    範囲設定とかは、実際は違うので打ち替えしました。
    表示させるセル番号は実は"Y"という列番ではなく 例えば"Y4"とか先頭行も
    微妙にズレるので
     Range("Y" & cn).Value = c.Value
    の所のを"Y4"と入れるとマクロが動きません。

    本当にVBAに関しては何もわからないので
    何があっていて何が違うのかもわからないです。

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13539 ] / ▼[ 13541 ]
■13540 / 3階層)  Re[3]: 表 データの入っているところだけ縦に取り出す
□投稿者/ よねさん -(2021/08/08(Sun) 08:35:13)
    2021/08/08(Sun) 08:36:59 編集(投稿者)
    > Range("Y" & cn).Value = c.Value
    > の所のを"Y4"と入れるとマクロが動きません。
    Y4セルから値を入力するのなら、cnの開始値を4となるようにcn=3として調整します。
    
    > 表示させるセル番号は実は"Y"という列番ではなく 例えば"Y4"とか先頭行も
    > 微妙にズレるので
    Range("Y" & cn).Value = c.Value としていますが、
    Cells(cn,"Y").Value = c.Value
    とした方がわかり易かったりしますか?Cells(行,列)となります。
    
    Sub test()
      Dim myRng As Range, cn As Long
      Dim c As Range
      Set myRng = Range("A1:G6") '値があるかを判断するセル範囲
      cn = 3 'cnの開始値を4とするため、ここでは3を設定します
        For Each c In myRng 'セル範囲を1個づつチェックします
            If c.Value <> "" Then 'セルの値が"" でない場合セルに値を入力します
                cn = cn + 1 'セルの値が""でない場合はcnの値をカウントアップします cn=4から始まります
                Range("Y" & cn).Value = c.Value 'Y列のcn行目に値を入力します
            End If
        Next c
    End Sub
    

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13540 ] / ▼[ 13542 ]
■13541 / 4階層)  Re[4]: 表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/08(Sun) 10:27:53)
    ありがとうございます。
    説明もつけて下さり、助かりました。
    そのまま貼り付けて、きちんとデータが入っている部分だけもってきました。

    もう一つよろしいでしょうか。

    表に打ち込んだデータを1度マクロで実行させて、
    間違いに気づき、そのデータを消した時に
    再度マクロを実行させても(excelでいうところの 更新作業?)
    消したデータは "Y"に残ったままです。
    きっと、その部分を追加しないとダメなんでしょうね。
    申し訳ありませんが、そのあたりもなんとかなりますでしょうか?
[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13541 ] / ▼[ 13543 ]
■13542 / 5階層)  Re[5]: 表 データの入っているところだけ縦に取り出す
□投稿者/ よねさん -(2021/08/08(Sun) 12:01:04)
    一寸、荒っぽいですが、
      Range(Range("Y4"), Range("Y4").End(xlDown)).Delete
    としてみました。データがないときは・・・
    Y4セルから下方向へ[Shift]+[Ctrl]+[↓]で選択されるセル範囲をクリアします。
    
    Sub test()
      Dim myRng As Range, cn As Long
      Dim c As Range
      '↓Y4セルから下のセルをクリアします。
      Range(Range("Y4"), Range("Y4").End(xlDown)).Delete
      Set myRng = Range("A1:G6") '値があるかを判断するセル範囲
      cn = 3 'cnの開始値を4とするため、ここでは3を設定します
        For Each c In myRng 'セル範囲を1個づつチェックします
            If c.Value <> "" Then 'セルの値が"" でない場合セルに値を入力します
                cn = cn + 1 'セルの値が""でない場合はcnの値をカウントアップします cn=4から始まります
                Cells(cn, "Y").Value = c.Value 'Y列のcn行目に値を入力します
            End If
        Next c
    End Sub
    
    

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13542 ] / ▼[ 13544 ]
■13543 / 6階層)  Re[6]: 表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/08(Sun) 13:52:56)
    ありがとうございます。
    本当に何回もすみません。

    マクロを実行する度に確かに元データはクリアされて 新たに新しいデータを
    更新してはくれます。
    が、素人考えなのですが マクロを実行する度、その列をバッサリ消去している
    ような動きをしていて、
    まず、マクロボタンを作ったら 押す度に左に移動するので「あれ?」と思ったのと
    その縦に並べた数字を別シートに貼って集計表を作るのですが、
    実行すると「#REF!」になってしまうことから 対象セルがなくなってしまって
    いるような感じになっています。

    本当に申し訳ないです。。。

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13543 ] / ▼[ 13545 ]
■13544 / 7階層)  Re[7]: 表 データの入っているところだけ縦に取り出す
□投稿者/ よねさん -(2021/08/08(Sun) 14:15:14)
    失礼しました。
    Delete を Clear に変更してください。
      Range(Range("Y4"), Range("Y4").End(xlDown)).Clear
    
    シートでは[Delete]キーでクリアになるので、うっかり Delete(削除)と書いてしまいました。
    
    

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13544 ] / ▼[ 13546 ]
■13545 / 8階層)  Re[8]: 表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/08(Sun) 15:03:59)
    本当に このオリンピックの最中の日曜日に
    私ごときの初心者の為に時間を割いて下さりありがとうございました。

    Excelにやってもらいたいことが、思い通りになり
    とても満足しております。
    本当にありがとうございます。

    ただ。ただ、最期に1つだけ。
    罫線もクリアになりますね^^;

    いいんです。罫線なんかなくても。結果さえ出てくれれば。
    いいんです。なので、一応「そりゃ〜クリアするんだもの罫線だってきえるさ〜」
    なのでOKなんです。
    全ては結果なので。

    ありがとうございました。
    助かりました!!
    また何かありましたら 教えて下さいね^^




[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13545 ] / ▼[ 13547 ]
■13546 / 9階層)  Re[9]: 表 データの入っているところだけ縦に取り出す
□投稿者/ よねさん -(2021/08/08(Sun) 15:10:12)
    > 罫線もクリアになりますね^^;
    Clear を ClearContents に変更してください。
    
    以下のような指定ができます。
    Clear:全て
    ClearContents:値と数式
    ClearFormats:書式 (色や罫線、条件付き書式など)

[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13546 ] / 返信無し
■13547 / 10階層)  Re[10]: 表 データの入っているところだけ縦に取り出す
□投稿者/ numa Mail -(2021/08/08(Sun) 15:25:49)
    やりました!
    これで、完成しました。
    私の、求めていたのはこれです。

    ほんとうに、本当にありがとうございました。
    これで、ゆっくりお盆を迎えられます。

    ありがとうございました。
[ 親 13537 / □ Tree ] 返信/引用返信 削除キー/


Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -