
No.3ベストアンサー
- 回答日時:
No.1の回答者です。
End Subの6行上からを以下のように書き換えます。
With Selection
.Sort FieldNumber:="列 2", SortFieldType:= _
wdSortFieldNumeric, SortOrder:=wdSortOrderDescending
.Columns(2).Delete
.Rows.ConvertToText Separator:=wdSeparateByParagraphs, _
NestedTables:=True
End With
Selection.Sort method (Word)のSortOrderで指定します。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
https://docs.microsoft.com/ja-jp/office/vba/api/ …
Public Function の部分は表の指定列のセルを読み込んで、文字列
だけを Sub Mozisuu_sout() に戻すための別に用意したマクロだと
考えてください。
http://macrocat.net/ExcitingJoboost/excelvba-sub …
このマクロを呼び出し、指定列から行を順番に指定し、その文字列
のみを str の変数に代入して戻しています。
戻った文字列の文字数をLENで取得して2列目に順番に挿入している
のです。
文字数をすべて挿入後に2列目を基準にソートしてから不要な列を
削除して表を解除しているのです。
No.2
- 回答日時:
No.1の回答者です。
こちら↓のマクロを応用しただけなので、適当なマクロですが。
http://akashi-keirin.hatenablog.com/entry/2018/0 …
Sub Mozisuu_sout()
Dim targetTable As Table
Dim str As String
Dim i As Integer
Dim mozisuu As Long
Selection.WholeStory
Selection.ConvertToTable
Set targetTable = ActiveDocument.Tables(1)
targetTable.Columns(1).Select
Selection.InsertColumnsRight
For i = 1 To targetTable.Rows.Count
str = getStringFromCell(targetTable:=targetTable, _
targetRow:=i, _
targetColumn:=1)
mozisuu = Len(str)
targetTable.Cell(i, 2).Range.InsertAfter (mozisuu)
Next
With Selection
.Sort FieldNumber:="列 2", SortFieldType:=wdSortFieldNumeric
.Columns(2).Delete
.Rows.ConvertToText Separator:=wdSeparateByParagraphs, _
NestedTables:=True
End With
End Sub
Public Function getStringFromCell( _
ByVal targetTable As Table, _
ByVal targetRow As Integer, _
ByVal targetColumn As Integer) As String
Dim str As String
str = targetTable.Cell(targetRow, targetColumn).Range.Text
str = Left(str, Len(str) - 2)
getStringFromCell = str
End Function
enunokokoroさん、試してみました。確かに「文字列の長さを基準」に昇順でソートされました。ありがとうございます。
実は、書いていなかったのですが、私は降順でのソートが目的でした。
恐らくどこかのコードを書き直すだけだと思うのですが、みつけられませんでした。それが解れば完成だと思います。
降順でのソートはどこを書き換えればよいのか、教えていただけないでしょうか?
よろしくお願いします
P.S.
ちなみに、VBEに書き込んだ時点で、End Subの下、Public Function getStringFromCell( _以下が切れてしまったのですが、昇順のソートに関しては問題が起こらなかったようです。
No.1
- 回答日時:
マクロは苦手なほうなので、簡単なアドバイスだけですが。
WordのマクロでもLEN関数は使えます。
対象文字列を取得してLEN関数で取り出せば、その文字数を使って
並べ替えも可能かと思います。
例えば2列の表があり、1列目の文字列の文字数を取得し、2列目に
書き出すことで、2列目を対象にして並べ替えができるということ
ですね。
https://www.relief.jp/docs/word-macro-fill-array …
https://www.relief.jp/docs/018048.html
https://docs.microsoft.com/ja-jp/office/vba/api/ …
早々の回答ありがとうございます。できそうな気もするのですが、調べていると、なかなか出てこないですね。もう少し探してみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスの文字列を上...
-
Windows10のクイックアクセスと...
-
アイコン名に(1)が付いているの...
-
ワードの句読点が変な位置に出...
-
QRコードについて
-
同様の質問になってしまいます...
-
ワードの段落番号と文字の隙間...
-
テスト問題などにある四角い空...
-
我慢の左上に文字が表示される現象
-
ワードで,一瞬,英数になって...
-
ワードの隠し文字について。 隠...
-
ワードで図の変更をすると図の...
-
ワードの読み上げ音声について ...
-
ワードが白と黒が反転してしま...
-
ワードで「 」(カギかっこ)の...
-
ワードの画質の設定
-
マイクロソフトワードのアプリ...
-
Office365 ワードのアイコンが...
-
文章の途中に四角い穴埋めをつ...
-
ワードで4段組みで文章を書い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスの文字列を上...
-
ワードの句読点が変な位置に出...
-
ワードの段落番号と文字の隙間...
-
同様の質問になってしまいます...
-
QRコードについて
-
テスト問題などにある四角い空...
-
アイコン名に(1)が付いているの...
-
我慢の左上に文字が表示される現象
-
ワードで「 」(カギかっこ)の...
-
ワードで,一瞬,英数になって...
-
ワードで4段組みで文章を書い...
-
ワードで図の変更をすると図の...
-
ワード PDF化した際、背景の...
-
ワードが白と黒が反転してしま...
-
正の字の入力
-
Office365 ワードのアイコンが...
-
文章の途中に四角い穴埋めをつ...
-
ワードで四角形の図形の中に文...
-
ワードの読み上げ音声について ...
-
ワードの画質の設定
おすすめ情報