0

問題

データであるテキストの列を含むExcelワークシートがあり、どのテキスト値をどのフォントとフォントサイズでフォーマットする必要があるかについていくつかのルールを念頭に置いています。

具体例

セル A1:「テキスト」

セル A2 .. (Col. A): テキストの文字列 (数語から数文まで) は、適切なフォントとフォント サイズで任意に書式設定されます

セル B1:「テキストの種類」

セル B2 ... (Col. B): 「heading」、「requirement」、「note」などの単一単語の文字列

留意すべきルール:

B列の文字列が「見出し」の場合、A列の文字列をフォントサイズ18にする

B列の文字列が「必須」の場合、A列の文字列をフォントCalibriにする

B列の文字列が「note」の場合、A列の文字列を「イタリック体」にします。

制約

スプレッドシートとしての Excel は、関数型プログラミング (数式) と並列処理 (再計算) がすべてです。はい、私は手続き型 VBA を書くことができますが、私にとってはスプレッドシートの精神に反します (手続き型プログラミングは非常に人気があり、Excel や前任者が長い間それを提供してきましたが)。

質問

特殊目的のVBA手続き型プログラミング以外の方法についてのアイデアはありますか?

解決していないように見えるもの

Excel の条件付き書式は、これらの特定のセル属性の設定を明示的に許可しないため、解決されません。

Excel UDF (ユーザー定義関数) は、他のセルに影響を与えないため解決しません。機能的には期待通り。また、フォーマットされていないテキストを複製する関数を作成したいが、値に基づいたスタイルまたはサイズを使用する場合でも、UDF は「環境」に影響を与えず、データのみを返すことができます。

ここで、VBA コードを Excel ワークシートのセルにテキストとして配置し、そのテキストを VBA として評価することさえできないことがわかりました。これは、セルに配置するフォント スタイルとサイズの VBA ステートメント用の単純な汎用 VBA 手続き型処理エンジンを作成するためです。私のワークシートで。

(この否定的な情報のいずれかが正しくなく、上記のいずれかが機能する場合は、修正してください。)

VBA専用の手続き型プログラミングの例 -- 機能するが回避しようとしているもの

Public Sub IterateThroughRangeSetFontStyleSize()

Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range

Set wb = Application.ActiveWorkbook
Set ws = wb.Worksheets("myWorkSheet")
Set rng = ws.Range("b2", "b4")

For Each cell In rng.Cells
    If LCase(cell.Text) = "bold" Then cell.Offset(0, -1).Font.Bold = True
    If LCase(cell.Text) = "italic" Then cell.Offset(0, -1).Font.Italic = True
    If LCase(cell.Text) = "large" Then cell.Offset(0, -1).Font.Size = 18
Next cell

End Sub

私には難しすぎると思われるアイデアもありますが、そうではないことを誰かが言うかもしれません

  • VBA が VBA エディター (VBE) に書き込み、データのワークシート列を読み取り、ルールに基づいて目的のフォント スタイルとサイズを計算し、VBA 手続き型コードを自動生成してデータ列のフォント スタイルとサイズを更新できるように Excel を構成します。

  • Excel ファイルを XML としてエクスポートまたは保存し、ルールに従ってフォーマットする XSL スタイル シートを作成し、XML を開き (インポート?)、XSL スタイル シートを使用するように Excel に指示します。

必要なもの

既成概念にとらわれず、シンプルに考えましょう!

4

2 に答える 2

1

データとフォーマット情報を別々に保持することが可能かもしれません:

Sheet 1: データ;
Sheet 2:シート1の対応するセルのセルフォーマットを記述する関数(結果はbgcolor = "#ff00ff"、font size = "3"など)。
Sheet 3:データとフォーマットがマージされ、XSLが提供されます。

必要なVBAは、シート2用に1つのUDFを作成し、シート3用にもう1つを作成することだけです。

于 2012-12-28T22:58:01.910 に答える
1

この質問がレベルかどうかわかりませんが、「Excel の精神に反する」という理由で VBA コードを書きたくないのですか? VBA は Excel 5.0 で導入されましたが、それ以前は手続き型マクロ言語がありました。自動化は常にExcel の人気に不可欠でした (そして、それ以前に Lotus 1-2-3 が台頭した主な理由でもありました)。

太字と斜体は、条件付き書式で操作 できます。

フォント サイズについては、はい、いくつかのコードを記述する必要があります。おそらく、いくつかのサンプル データまたはデータの種類の表示 (テキスト、整数、実数など) によって、いくつかの提案が開始されます。

于 2012-12-27T22:29:19.397 に答える