
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- その他(Microsoft Office) 逆順 3 2023/08/24 09:30
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- Visual Basic(VBA) evcel VBAについて 2 2022/08/02 21:37
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- 面接・履歴書・職務経歴書 履歴書にwordとexcelは基礎的なことはできると書きたいのですが、何と書いたら良いでしょう?実際 5 2022/10/14 16:33
- Excel(エクセル) Excel 郵便番号順に並び変えたい 同じ番号が複数あるとき 4 2022/04/28 18:35
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
マクロの連続印刷が突然不可能...
-
メッセージボックスのOKボタ...
-
Excel_マクロ_現在開いているシ...
-
TERA TERMを隠す方法
-
ダブルクリックで貼り付けた画...
-
一つのTeratermのマクロで複数...
-
マクロ実行時エラー
-
【EXCEL VBA】オートシェイプを...
-
Excelのセル値に基づいて図形の...
-
ExcelのVBA。public変数の値が...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
-
EXCELのマクロの重複起動...
-
エクセルのマクロをセルの値に...
-
VC++ 2008 EXPRESS "_T"識別子...
-
UWLSの記録でマクロを作成し使...
-
【Excel】複数のマクロをまとめ...
-
ExcelVBA 図形をクリックした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
Excelのセル値に基づいて図形の...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
オートフィルターとExcelマクロ...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
おすすめ情報